我有一个DataTemplate在ListViews的样式。
ScriptAdvised是一个枚举。
错误来自StackPanel背景属性,因为如果我删除它,然后它的工作。
我的目标是根据已建议的属性(也是ScriptAdvised类型)访问其中一个画笔。
当我运行程序时,抛出以下异常:
System.Windows.Markup。绑定不能在类型为ResourceDictionary的deferrableconent属性上设置。'Binding'只能在DependencyObject的DependencyProperty上设置。'
<DataTemplate>
<DataTemplate.Resources>
<SolidColorBrush x:Key="{x:Static logic:ScriptAdvised.Yes}" Color="Green" Opacity="0.15"/>
<SolidColorBrush x:Key="{x:Static logic:ScriptAdvised.Limited}" Color="Yellow" Opacity="0.15"/>
<SolidColorBrush x:Key="{x:Static logic:ScriptAdvised.No}" Color="Red" Opacity="0.15"/>
</DataTemplate.Resources>
<StackPanel Background="{StaticResource {Binding Advised}}" Orientation="Horizontal">
<CheckBox/>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
我不明白,因为我的应用程序中没有任何显式的resourcedictionary。
根据"Advised
"的值,使用"Style
"one_answers"DataTriggers
"设置"Background
"。像这样:
<DataTemplate>
<DataTemplate.Resources>
<SolidColorBrush x:Key="Yes" Color="Green" Opacity="0.15"/>
<SolidColorBrush x:Key="Limited" Color="Yellow" Opacity="0.15"/>
<SolidColorBrush x:Key="No" Color="Red" Opacity="0.15"/>
</DataTemplate.Resources>
<StackPanel Orientation="Horizontal">
<StackPanel.Style>
<Style TargetType="StackPanel">
<Style.Triggers>
<DataTrigger Binding="{Binding Advised}" Value="{x:Static logic:ScriptAdvised.Yes}">
<Setter Property="Background" Value="{StaticResource Yes}" />
</DataTrigger>
<DataTrigger Binding="{Binding Advised}" Value="{x:Static logic:ScriptAdvised.Limited}">
<Setter Property="Background" Value="{StaticResource Limited}" />
</DataTrigger>
<DataTrigger Binding="{Binding Advised}" Value="{x:Static logic:ScriptAdvised.No}">
<Setter Property="Background" Value="{StaticResource No}" />
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
<CheckBox/>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>