空の文字列のデフォルト値を提供するコンバーターがあります。どうやら、ConverterParameter にバインディングを追加することはできないため、代わりにバインドするプロパティをコンバーターに追加します。
ただし、デフォルトのプロパティに対して返される値は、私の値ではなく「System.Windows.Data.Binding」の文字列です。
このバインディングをコードで解決して、必要な実際のローカライズされた文字列を返すにはどうすればよいですか?
これが私のコンバータークラスです(回答https://stackoverflow.com/a/15567799/250254に基づく):
public class DefaultForNullOrWhiteSpaceStringConverter : IValueConverter
{
public object Default { set; get; }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (!string.IsNullOrWhiteSpace((string)value))
{
return value;
}
else
{
if (parameter != null)
{
return parameter;
}
else
{
return this.Default;
}
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
}
そして私のXAML:
<phone:PhoneApplicationPage.Resources>
<tc:DefaultForNullOrWhiteSpaceStringConverter x:Key="WaypointNameConverter"
Default="{Binding Path=LocalizedResources.Waypoint_NoName, Mode=OneTime, Source={StaticResource LocalizedStrings}}" />
</phone:PhoneApplicationPage.Resources>
<TextBlock Text="{Binding Name, Converter={StaticResource WaypointNameConverter}}" />
何か案は?