我有一个ListBox
控件绑定到ObservableCollection<ToDoCategory>
ItemsSource="{Binding Categories}
。在ToDoCategory
内,有CategoryName
和CategoryColor
(两个字符串)。 CategoryName
绑定在ItemTemplate
内。现在,我想要做的是根据ListBox
更改CategoryColor
中所选类别的颜色。我已经有字符串刷IValueConverter
,它返回SolidColorBrush
字符串。它也在页面资源中正确定义。我知道我需要改变ItemContainerStyle
。目前,我有这样的事情:
<Style x:Key="CategoryListBoxContainerStyle" TargetType="ListBoxItem">
Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border...>
<VisualStateManager.VisualStateGroups>
<VisualState x:Name="Selected">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="InnerGrid">
<DiscreteObjectKeyFrame KeyTime="0" Value="{Binding CategoryColor, Converter=StringToBrushConverter}"/>
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ListBoxItemSelectedForegroundThemeBrush}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
.
.
.
</style>
这不起作用。如何将InnerGrid的背景绑定到CategoryColor
的<{1}}?