在 MVVM 项目中,只有当视图模型公开的属性设置为 true 时,我才想将样式“ReadOnlyTextBox”应用于控件。我以为我可以使用触发器,但不幸的是我从这里学到了
和这里
如何使 Style.Triggers 触发要应用的不同命名样式
我无法更改样式定义中的样式属性。我正在寻找一种简单的替代方法,否则我将使用触发器来应用样式“ReadOnlyTextBox”中包含的所有属性。我不喜欢这种方法,因为它违反了 DRY 原则,所以我希望你能提出其他建议。
谢谢菲利波
在 MVVM 项目中,只有当视图模型公开的属性设置为 true 时,我才想将样式“ReadOnlyTextBox”应用于控件。我以为我可以使用触发器,但不幸的是我从这里学到了
和这里
如何使 Style.Triggers 触发要应用的不同命名样式
我无法更改样式定义中的样式属性。我正在寻找一种简单的替代方法,否则我将使用触发器来应用样式“ReadOnlyTextBox”中包含的所有属性。我不喜欢这种方法,因为它违反了 DRY 原则,所以我希望你能提出其他建议。
谢谢菲利波
如果您不是真的被迫使用触发器,一种实用的方法可能是使用 IValueConverter,它将您的 ViewModel-Value 作为输入并返回所需的样式(类似于 DataTemplateSelectors),然后执行类似的操作
<UserControl.Resources>
<prefix:StyleConverter x:Key="styleConverter"/>
</UserControl.Resources>
<!-- blabla -->
<TextBox Style="{Binding SomeCondition, Converter={StaticResource styleConverter}}"/>
<!-- blabla -->
您可以使用样式选择器根据自定义条件应用样式。