我是WPF数据绑定/样式/模板的新手...我试图通过使用样式将一组属性值应用于按钮.样式绑定到类的字段.如您所见,这适用于BackColor属性.但是当我尝试设置TextBlock的Text时,它不起作用(我也没有得到绑定错误).我的最终目标是也能够将图像设置为内容.
当我不使用DataTemplate,并使用SetterProperty ="Content"而不是"ContentTemplate"时,它将适用于一个按钮,但是当添加第二个按钮时,它会给我一个运行时错误"指定元素已经是另一个按钮的逻辑子元素元素.首先断开它."
我在这里错过了什么?我怎么把"TextBlock Text ="???
顺便说一句.我想将样式移动到全局范围,一旦它工作,所以我不想使用明确引用MyClass的任何东西
<Window.Resources>
<Style TargetType="Button" x:Key="MyStyle">
<Setter Property="Background" Value="{Binding BackColor}"/>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="XYZ-"/>
<TextBlock Text="{Binding Text}"/>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<StackPanel Orientation="Horizontal" Height="30">
<Button Style="{StaticResource MyStyle}" DataContext="{Binding Action1}"/>
<Button Style="{StaticResource MyStyle}" DataContext="{Binding Action1}"/>
<Button Style="{StaticResource MyStyle}" DataContext="{Binding Action2}"/>
<Button Style="{StaticResource MyStyle}" DataContext="{Binding Action2}"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
和
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
Action1 = new MyClass() { Text = "ACTION1", BackColor …
Run Code Online (Sandbox Code Playgroud)