在i對象綁定到一個WPF控制我想顯示屬性,以根據不同的單元系統上的不同級別的精確度被使用。例如,如果值爲真,我有一個屬性IsMetric
我想顯示一個小數位的值,如果它是假的,然後三位小數。目前,我將它添加到資源的調用之前的構造函數InitialiseComponent()
這樣的靜態資源字符串:DataTrigger上的StringFormat在WPF
public RoomDisplay(Room room)
{
string format = room.IsMetric ? "{0:0.0}" : "{0:0.000}";
this.Resources.Add("format", format);
InitializeComponent();
this.DataContext = room;
}
然後XAML中看起來是這樣的:
<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path=Breadth, StringFormat={StaticResource ResourceKey=format}}" TextAlignment="Right" />
這已經高達現在工作。然而,這種方法隨着嵌入式控制而下降,我從未對這種方法感到滿意。
我已經調查DataTriggers,沿着線的東西:
<DataTrigger Binding="{Binding IsMetric}" Value="true">
<Setter Property="Text" Value="{Binding Breadth, StringFormat=F1}"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsMetric}" Value="false">
<Setter Property="Text" Value="{Binding Breadth, StringFormat=F3}"/>
</DataTrigger>
然而,這是一個痛苦添加到所有的TextBlocks。理想情況下,我想把它放入一個風格,但我不能找出一個方法來設置沒有文本值的StringFormat。
的另一種選擇是有對象的格式屬性和綁定的StringFormat到,但我寧願呆在遠離這一切。有任何想法嗎? 謝謝。
你有沒有考慮多值轉換器? – Paparazzi 2012-03-17 12:54:33
轉換器也有你可以使用的'System.Globalization.CultureInfo culture'參數。 – Silvermind 2012-03-17 13:49:40