こんにちは
いくつかの環境変数に応じていくつかのコントロールのプロパティを変更しようとしていますが、私はdatacontextの各コントロールのプロパティを作成しないようにしたいので、コントロール名に従ってプロパティを設定します。目標は、すべてのコントロールのプロパティを1つ使用することです: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"になるでしょうか?それを行うには多くの方法があり、ほとんどがあまりにも邪魔されています。(「明白な」と言いました...)。本当の目標を教えてください! –
@Markus 2つより良いですか? –