[英]Edit style WPF from code C#
我有这种情况:
我在窗户上有一个铁架。 我有一个页面,将从代码中加载一个页面。 我在页面中有一个网格,其中有代码定义的行和列。
我想用按钮(从矩形创建)填充网格的行和列。 我写了这段代码:
样式适用于每个按钮:
<Style TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Rectangle x:Name="rect" Style="{DynamicResource rectangle_style}" Cursor="Hand">
<Rectangle.Fill>
<ImageBrush ImageSource="Attempts\image.jpg" Stretch="UniformToFill"/>
</Rectangle.Fill>
</Rectangle>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Content=""/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsFocused" Value="True"/>
<Trigger Property="IsDefaulted" Value="True"/>
<Trigger Property="IsMouseOver" Value="True"/>
<Trigger Property="IsPressed" Value="True"/>
<Trigger Property="IsEnabled" Value="False"/>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
POPOLATE CLASS CODE:
public void popolate(Grid grd)
{
for(int j = 1; j < 4; ++j)
{
for (int i = 1; i < 6; ++i)
{
Button btn = new Button();
btn.Margin= new Thickness(4,4,4,4);
grd.Children.Add(btn);
btn.SetValue(Grid.RowProperty, j);
btn.SetValue(Grid.ColumnProperty, i);
}
}
主要致电类别:
公共局部类MainWindow:Window {
Page1 page = new Page1();
Costruct costruttore = new Costruct();
public MainWindow()
{
this.InitializeComponent();
costruttore.popolate(page.LayoutRoot);
frame_first.NavigationService.Navigate(page);
// Insert code required on object creation below this point.
}
}
我想可以在代码后面的每个按钮的矩形中设置不同的图像()。 我如何才能为此编写代码?
请好好解释一下,因为我是WPF的主要负责人!
Style
是单个实例,如果您更改Style
Image
,它将在使用Style
所有地方进行更改。
没有创建自定义控件,我能想到的最简单的解决方案是使用Buttons
Tag
属性来传递图像文件名, Tag
是DependancyProperty
因此它支持DataBinding
。
例:
<Style TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Rectangle x:Name="rect" DataContext="{TemplateBinding Tag}" Style="{DynamicResource rectangle_style}" Cursor="Hand">
<Rectangle.Fill>
<ImageBrush ImageSource="{Binding}" Stretch="UniformToFill"/>
</Rectangle.Fill>
</Rectangle>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Content=""/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsFocused" Value="True"/>
<Trigger Property="IsDefaulted" Value="True"/>
<Trigger Property="IsMouseOver" Value="True"/>
<Trigger Property="IsPressed" Value="True"/>
<Trigger Property="IsEnabled" Value="False"/>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
码:
for (int i = 1; i < 6; ++i)
{
Button btn = new Button();
btn.Margin= new Thickness(4,4,4,4);
grd.Children.Add(btn);
btn.SetValue(Grid.RowProperty, j);
btn.SetValue(Grid.ColumnProperty, i);
btn.Tag = "The filename for this buttons image";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.