小编Nig*_*t94的帖子

如何在Style内的WPF DataTemplate中使用绑定

我是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)

.net c# wpf binding templates

1
推荐指数
1
解决办法
4887
查看次数

标签 统计

.net ×1

binding ×1

c# ×1

templates ×1

wpf ×1