XmlParseException当在DataTemplate中使用绑定访问带有非字符串键的资源时



我有一个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>

相关内容

  • 没有找到相关文章

最新更新