2012-09-05 38 views
1

在MVVM項目中,我只想將視圖模型公開的屬性設置爲true時,將樣式「ReadOnlyTextBox」應用於控件。 我以爲我可以使用觸發器但不幸的是我從這裏有條件地將樣式應用於控件

Style Trigger to Apply another Style

瞭解到,在這裏

How to make Style.Triggers trigger a different named style to be applied

,我不能更改樣式定義中的樣式屬性。我正在尋找一種簡單的替代方法,否則我將使用觸發器來應用樣式「ReadOnlyTextBox」中包含的所有屬性。我不喜歡這種方法,因爲它違反了DRY原則,所以我希望你能提出其他建議。

感謝 菲利波

回答

1

如果你不是真的被迫使用觸發器,以務實的方式,可以使用的IValueConverter是把你的視圖模型 - 值作爲輸入並返回所需的伴奏(smoewhat類似DataTemplateSelectors),然後就做類似

<UserControl.Resources> 
<prefix:StyleConverter x:Key="styleConverter"/> 
</UserControl.Resources> 
<!-- blabla --> 
<TextBox Style="{Binding SomeCondition, Converter={StaticResource styleConverter}}"/> 
<!-- blabla --> 
0

您可以使用樣式選擇器來基於自定義條件應用樣式。

StyleSelector

+0

心不是這只是可用的,當你一個ItemsControl中使用呢? –

相關問題