1
在我的項目中,我有多個不同的必需控件。爲了讓用戶知道一個字段是必需的,我使用DataTrigger在該字段上設置了一個紅色輪廓。如何在DataTrigger中使用預定義的樣式
這裏是一個文本框是必填字段:
<TextBox Text="{Binding RationaleForNoInvestigation, UpdateSourceTrigger=PropertyChanged}">
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<DataTrigger Binding="{Binding RationaleForNoInvestigation,
Converter={StaticResource IsNullOrEmptyStringConverter}}"
Value="True">
<Setter Property="BorderBrush"
Value="Red" />
<Setter Property="BorderThickness"
Value="1" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
這裏是一個組合框是必填字段:
<telerik:RadComboBox SelectedItem="{Binding Path=SelectedRoomType, Mode=TwoWay}">
<telerik:RadComboBox.Style>
<Style TargetType="telerik:RadComboBox">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=SelectedRoomType,
Converter={StaticResource IsNullConverter}}"
Value="True">
<Setter Property="BorderBrush"
Value="Red" />
<Setter Property="BorderThickness"
Value="2" />
</DataTrigger>
</Style.Triggers>
</Style>
</telerik:RadComboBox.Style>
</telerik:RadComboBox>
不過,我可能有一天決定改變視覺而是指示一個必填字段,而不是藍色背景。 我不想在我的項目中使用樣式並手動更改它的所有地方。相反,我想設置一個全局風格,我可以在特定控件中引用它,然後可以在一個地方更改全局風格。
如何從上面的代碼中提取這些代碼並放到全局位置?我怎麼會在上面的TextBox和ComboBox中引用它?
<Setter Property="BorderBrush"
Value="Red" />
<Setter Property="BorderThickness"
Value="1" />
你爲什麼建議把樣式放在單獨的文件中?我們通常將它們放在App.xaml文件中。我知道一個單獨的文件允許在不同的應用程序中重用,但是這個應用程序有沒有優勢? –
@AvrohomYisroel我想這取決於你的應用程序的大小。例如,在工作中,我們至少有100個不同的XAML文件。想象一下只有一個文件中的所有樣式!我猜Rose的情況可能不是一個巨大的應用程序,但沒有人知道,對吧? –
這對我有幫助,但我有幾個問題: 1.分開保存筆刷顏色非常聰明,如果我決定改變筆刷顏色,它將對我有所幫助。但是,如果我決定將風格完全改變爲其他風格,如在綠色背景中呢?我將不得不改變所有定義的樣式。 2.有些地方我不能使用這些定義的樣式,因爲觸發器更復雜。例如,我有一個MultipleDataTrigger字段,它有多個要求使其成爲強制性的,但它的風格應該與其他控件相同... – Rose