XAML用户控制数据触发器

XAML用户控制数据触发器,xaml,Xaml,我在XAML中有一个UserControl,它有几个按钮 当我的C代码中的VideoEnable属性更改为true时,我想更改按钮的颜色 以下代码已编译但崩溃,我无法找到正确的解决方案 <UserControl.Triggers> <DataTrigger Binding="{Binding VideoEnable}" Value="true"> <Setter Property="Button.Background" Value="Gree

我在XAML中有一个UserControl,它有几个按钮

当我的C代码中的VideoEnable属性更改为true时,我想更改按钮的颜色

以下代码已编译但崩溃,我无法找到正确的解决方案

<UserControl.Triggers>
    <DataTrigger Binding="{Binding VideoEnable}" Value="true">
        <Setter Property="Button.Background" Value="Green" TargetName="VideoButton" />
        <Setter Property="Grid.Background" Value="Blue" TargetName="videoGrid" />
    </DataTrigger>
</UserControl.Triggers>
现在我尝试了以下代码,它不会崩溃,但背景不会改变:s

<UserControl.Resources>
    <Style TargetType="{x:Type Button}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=Videos}" Value="true">
                <Setter Property="Button.Background" Value="Green" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</UserControl.Resources>

    public string Videos
    {
        get { return m_videos; }

        set
        {
            m_videos = value;
            NotifyPropertyChanged("Videos");
        }
    }
好的,我发现了问题

这是我的钮扣

        <Button DataContext="{Binding LensesBtn}" Margin="0,5,0,0" FontSize="14" FontWeight="Bold" Height="40" Opacity="0.8" HorizontalAlignment="Stretch" Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}">
            <Button.Background>#dbebf9</Button.Background>
            <Button.BorderBrush>PowderBlue</Button.BorderBrush>
            <Button.BorderThickness>4</Button.BorderThickness>
            Lenses
        </Button>
当我删除DataContext、Style和Background属性时,一切都会正常工作

但我真的需要这个属性

有什么建议吗

<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
    <Style.Triggers>
        <Trigger Property="Videos" Value="True">
            <Setter Property="Background" Value="Green" />
        </Trigger>
    </Style.Triggers>
</Style>
如果您的代码有效,这就是您需要的示例。 还可以添加转换器以检查背景和其他属性

如果您的代码有效,这就是您需要的示例。
您还可以添加转换器以检查背景和其他属性。

您可以发布错误消息吗?应用程序刚刚崩溃。我认为我使用dataTrigger的方式是错误的:s?你能发布错误消息吗?应用程序只是崩溃了。我认为我使用数据触发器的方式是错误的:s?