gpt4 book ai didi

c# - C# 中的 XAML 代码

转载 作者:太空宇宙 更新时间:2023-11-03 11:43:19 25 4
gpt4 key购买 nike

我一直在尝试将以下 XAML 代码转换为 C#,但没有成功。我有点卡在 ControlTemplate 部分。我是 WPF 的新手,所以我可能做错了。

这背后的想法是我必须从数据库中检索数据并使用以下模板包装每条记录。由于行的数量可能不同,我想使用 C# 代码生成每个模板。

我故意没有定义所有的控件属性。

             <Grid>
<Button Content="Button" Height="30" Name="button1" Margin="8,8,7,8" Click="button1_Click" >
<Button.Template>
<ControlTemplate>
<Rectangle RadiusX="5" RadiusY="5" Stroke="LightYellow" StrokeThickness="0.5" Name="myRectangle">
<Rectangle.Fill>
<VisualBrush Opacity="0.7">
<VisualBrush.Visual>
<TextBlock Name="myTextBlock" Foreground="LightYellow" Background="DarkBlue" Text="Text here" />
</VisualBrush.Visual>
</VisualBrush>
</Rectangle.Fill>
</Rectangle>
</ControlTemplate>
</Button.Template>
</Button>
</Grid>

到目前为止我的 C# 代码:

Grid grid = new Grid();
Button button = new Button();
ControlTemplate controlTemplate = new ControlTemplate();
Rectangle rectangle = new Rectangle();
VisualBrush visualBrush = new VisualBrush();
TextBlock textBlock = new TextBlock();
textBlock.Text = "Text here";
textBlock.Background = new SolidColorBrush(Color.FromRgb(2, 33, 233));

visualBrush.Visual = textBlock;
visualBrush.Opacity = 0.7;
rectangle.Fill = visualBrush;

controlTemplate //What to do here?

button.Template = controlTemplate;
button.Content = "Button";
button.Height = 30;
button.Width = 100;
grid.Children.Add(button);
this.Content = grid;

提前致谢

授予

最佳答案

这段后面的代码应该等同于你的xaml。
当从 Xaml“转换”为代码隐藏时,从内到外的工作几乎更容易,在这种情况下从 TextBlock 开始,然后逐步进行。

TextBlock textBlock = new TextBlock();
textBlock.Name = "myTextBlock";
textBlock.Foreground = Brushes.LightYellow;
textBlock.Background = Brushes.DarkBlue;
textBlock.Text = "Text here";

VisualBrush visualBrush = new VisualBrush();
visualBrush.Opacity = 0.7;
visualBrush.Visual = textBlock;

FrameworkElementFactory rectangle = new FrameworkElementFactory(typeof(Rectangle));
rectangle.SetValue(Rectangle.RadiusXProperty, 5.0);
rectangle.SetValue(Rectangle.RadiusYProperty, 5.0);
rectangle.SetValue(Rectangle.StrokeProperty, Brushes.LightYellow);
rectangle.SetValue(Rectangle.StrokeThicknessProperty, 0.5);
rectangle.SetValue(Rectangle.NameProperty, "myRectangle");
rectangle.SetValue(Rectangle.FillProperty, visualBrush);

ControlTemplate controlTemplate = new ControlTemplate();
controlTemplate.VisualTree = rectangle;

Button button = new Button();
button.Content = "Button";
button.Height = 30;
button.Name = "button1";
button.Margin = new Thickness(8, 8, 7, 8);
button.Click += new RoutedEventHandler(button_Click);
button.Template = controlTemplate;

Grid grid = new Grid();
grid.Children.Add(button);

关于c# - C# 中的 XAML 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4072638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com