你好
我試圖按照一些環境變量來改變一些控件的屬性,我想,以避免造成對DataContext的每個控件的屬性,所以我想用轉換器它根據控件名稱設置屬性。目標是用一個屬性對所有控件:WPF:多個控件綁定到同一屬性
<Grid.Resources>
<local:NameToStringConverter x:Key="conv" />
</Grid.Resources>
<TextBlock Name="FordPerfect"
Text="{Binding ElementName="FordPerfect" Path=Name, Converter={StaticResource conv}, Mode=OneWay}"/>
<TextBlock Name="Arthur"
Text="{Binding ElementName="Arthur" Path=Name, Converter={StaticResource conv}, Mode=OneWay}"/>
<TextBlock Name="ZaphodBeeblebrox"
Text="{Binding ElementName="ZaphodBeeblebrox" Path=Name, Converter={StaticResource conv}, Mode=OneWay}"/>
和...
public class NameToStringConverter : IValueConverter
{
public object Convert(
object value, Type targetType,
object parameter, CultureInfo culture)
{
if (MyGlobalEnv.IsFlavor1 && ((string)value).Equals("ZaphodBeeblebrox")) return "42"
if (MyGlobalEnv.IsFlavor2 && ((string)value).Equals("ZaphodBeeblebrox")) return "43"
if (MyGlobalEnv.IsFlavor1 && ((string)value).Equals("Arthur")) return "44"
return "?";
}
public object ConvertBack(
object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new NotSupportedException("Cannot convert back");
}
}
我敢肯定有一個更好,更優雅的方式...任何想法?
我不明白這一點。你想將TextBox.Text設置爲「?」除非TextBox.Name ==「6 * 9」,那麼它會是「42」?有很多方法可以做到這一點,而且大多數方法都不那麼混亂(會說'顯而易見'...)。請告訴我們你的真正目標! – 2011-03-21 11:48:29
@Markus是否更好? – 2011-03-21 11:57:28