问题:在 BarCheckItem 中,如果 BarCheckItem IsChecked,如何在其 DataTemplate 中设置边框样式?
我正在设计一个BarCheckItem
. 为此,我在其中添加ContentTemplate
了 DataTemplate
一些在 MouseOver 上更改的颜色边框:
<dxb:BarCheckItem Name="barCheckItemRecord"
Command="..."
Cursor="Hand"
IsChecked="..."
IsVisible="..." >
<dxb:BarCheckItem.ContentTemplate>
<DataTemplate>
<StackPanel>
<Border x:Name="audioButtonInnerBorderLight">
<Canvas .../>
</Border>
</StackPanel>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="audioButtonInnerBorderLight" Property="Background" Value="#30FFFFFF" />
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</dxb:BarCheckItem.ContentTemplate>
</dxb:BarCheckItem>
我现在要做的是在BarCheckItem为IsChecked
.
问题是,我只知道如何在样式中使用触发器,如下所示:
<dxb:BarCheckItem Name="barCheckItemRecord" [all the code from above]>
...
<dxb:BarCheckItem.Style>
<Style TargetType="{x:Type dxb:BarCheckItem}">
<Setter Property="Background" Value="Red" />
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" Value="Blue" />
</Trigger>
<Trigger Property="IsChecked" Value="{x:Null}">
<Setter Property="Background" Value="Yellow" />
</Trigger>
</Style.Triggers>
</Style>
</dxb:BarCheckItem.Style>
</dxb:BarCheckItem>
但我不知道如何从触发器指向边界 (x:Name="audioButtonInnerBorderLight")。因为触发器不知道边界在哪里。
我怎样才能做出类似以下的工作?:
<Style TargetType="{x:Type dxb:BarCheckItem}">
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="audioButtonInnerBorderLight" Property="Background" Value="Purple" />
</Trigger>
</Style>
注意:我认为最好的办法是BarCheckItem
使用Template
setter 将边框放在 中的 ContentTemplate 中。但看起来 BarCheckItems 不允许模板化。