【发布时间】:2012-09-13 14:32:43
【问题描述】:
我有一个可用于多个编辑对象的编辑器视图。多个对象的视图模型为需要处理的每个字段提供了一个类似于 Field1Multiple 的 bool 类型的属性。在这种情况下,它现在只是 ComboBox 控件。每当应为该字段指示多个不同的值时,应将某种样式应用于在 App.xaml 中定义的该控件。该样式更改了控件的背景,以显示此处没有可以显示的单个值。
我已尝试使用此 XAML 代码:
<ComboBox
ItemsSource="{Binding Project.Field1Values}" DisplayMemberPath="DisplayName"
SelectedItem="{Binding Field1}">
<ComboBox.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Field1Multiple}" Value="true">
<Setter
Property="ComboBox.Style"
Value="{StaticResource MultiValueCombo}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
但它不起作用,因为我无法从 Style 内部设置 Style 属性。如果我直接在控件上使用触发器,编译器说可能只有 EventTriggers,没有 DataTriggers。
如何根据绑定值设置控件的样式?或者,如果绑定值为真,如何为控件设置某种样式?
【问题讨论】:
-
只需要更改组合框的背景吗?
-
您的
Style有多复杂?通常我只是将更改的设置器添加到触发器,其中可以包括ItemTemplate -
检查这个stackoverflow.com/questions/3397497/…他做了类似的事情
-
问题是,该样式将用于具有多重编辑支持的每个字段,并且会被使用数百次...我不想经常复制一行样式.
标签: wpf data-binding triggers