在MVVM项目中,我希望仅当viewmodel公开的属性设置为true时才将样式“ReadOnlyTextBox”应用于控件。 我以为我可以使用触发器但不幸的是我从这里学到了
Style Trigger to Apply another Style
在这里
How to make Style.Triggers trigger a different named style to be applied
我无法在样式定义中更改样式属性。我正在寻找一种简单的替代方法,否则我将使用触发器来应用样式“ReadOnlyTextBox”中包含的所有属性。我不喜欢这种方法,因为它违反了DRY原则,所以我希望你能提出别的建议。
由于 菲利普
答案 0 :(得分:1)
如果您不是真的被迫使用触发器,那么实用的方法可能是使用IValueConverter将ViewModel-Value作为输入并返回所需的Style(类似于DataTemplateSelectors),然后执行类似
的操作<UserControl.Resources>
<prefix:StyleConverter x:Key="styleConverter"/>
</UserControl.Resources>
<!-- blabla -->
<TextBox Style="{Binding SomeCondition, Converter={StaticResource styleConverter}}"/>
<!-- blabla -->
答案 1 :(得分:0)
您可以使用样式选择器根据自定义条件应用样式。