У меня есть конвертер, который предоставляет значение по умолчанию для пустых строк. По-видимому, вы не можете добавить привязку к ConverterParameter, поэтому я добавляю свойство в конвертер, к которому я привязываюсь.Устранение привязки XAML через код на Windows Phone 8
Однако значение, которое я возвращаю для свойства по умолчанию, представляет собой строку «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}}" />
Любые идеи?
Perfect - спасибо! – Gavin
Спасибо за редактирование, извините, что он был отклонен, потому что это было правильное редактирование! –
Не волнуйтесь - я решил бы изменить код, чтобы облегчить жизнь кому-либо еще с той же проблемой;) – Gavin