1

在 MVVM 项目中,只有当视图模型公开的属性设置为 true 时,我才想将样式“ReadOnlyTextBox”应用于控件。我以为我可以使用触发器,但不幸的是我从这里学到了

样式触发器以应用另一种样式

和这里

如何使 Style.Triggers 触发要应用的不同命名样式

我无法更改样式定义中的样式属性。我正在寻找一种简单的替代方法,否则我将使用触发器来应用样式“ReadOnlyTextBox”中包含的所有属性。我不喜欢这种方法,因为它违反了 DRY 原则,所以我希望你能提出其他建议。

谢谢菲利波

4

2 回答 2

1

如果您不是真的被迫使用触发器,一种实用的方法可能是使用 IValueConverter,它将您的 ViewModel-Value 作为输入并返回所需的样式(类似于 DataTemplateSelectors),然后执行类似的操作

<UserControl.Resources>
<prefix:StyleConverter x:Key="styleConverter"/>
</UserControl.Resources>
<!-- blabla -->
<TextBox Style="{Binding SomeCondition, Converter={StaticResource styleConverter}}"/>
<!-- blabla -->
于 2012-09-05T06:59:45.250 回答
0

您可以使用样式选择器根据自定义条件应用样式。

样式选择器

于 2012-09-05T07:03:49.517 回答