更改矩形背景以反映WPF中DataContext中的布尔状态

Chr*_* D. 0 c# wpf xaml

我有一个简单的UI,它在其应用程序模型中调用几个解析和处理例程,通过BackgroundWorkers异步执行它们的工作.当模型代码不起作用时,它会设置一些属性,解析和处理.我的UI中有两个矩形,我想根据这些bool是否设置来改变颜色.窗口DataContext设置为模型,消息列表和UI的其他部分工作正常,我似乎无法弄清楚如何表达我想在XAML中做什么.

这是我的矩形代码的示例:

<Rectangle Height="20" Name="ParsingLamp" Stroke="Black" Width="20" RadiusX="4" RadiusY="4" Fill="Gray">
    <Rectangle.Triggers>
        <Trigger Property="{Binding Path=Parsing}" Value="true">
            <Setter TargetName="ParsingLamp" Property="Fill" Value="LightGreen" />
        </Trigger>
        <Trigger Property="{Binding Path=Parsing}" Value="false">
            <Setter TargetName="ParsingLamp" Property="Fill" Value="Brown" />
        </Trigger>
    </Rectangle.Triggers>
</Rectangle>
Run Code Online (Sandbox Code Playgroud)

我收到一条错误,上面写着"填充成员无效,因为它没有质量类型名称."

也许触发器不是正确的方法来做我想要完成的事情?

Phi*_*hil 6

一些问题:

  • 您需要使用DataTrigger,因为您绑定了ViewModel.

  • DataTriggers需要采用Style.

  • 如果设置了本地值,例如,<Rectangle Fill=''/>这将覆盖触发器设置的值,因此您需要将其删除.

这应该工作:

<Page.Resources>
    <Style x:Key="LampStyle" TargetType="{x:Type Rectangle}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=Parsing}" Value="true">
                <Setter Property="Fill" Value="LightGreen" />
            </DataTrigger>
            <DataTrigger Binding="{Binding Path=Parsing}" Value="false">
                <Setter Property="Fill" Value="Brown" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Page.Resources>

<Grid>
    <Rectangle Height="20" Style="{StaticResource LampStyle}" Stroke="Black" Width="20" RadiusX="4" RadiusY="4" />
</Grid>
Run Code Online (Sandbox Code Playgroud)