Просто из интереса....
Если у меня есть ViewModel с неинициализированной строкой, привязанной к текстовому полю, я могу использовать TargetNullValue
для отображения значения по умолчанию.
Однако мне было интересно, могу ли я использовать то же значение для обновления строки, если это null
?
В основном вместо
set
{
if (value != null) text = value;
else value = "defaultstring";
OnPropertyChanged();
}
просто сделайте то же самое из привязки данных, используя TargetNullValue
.
Вы можете манипулировать геттером, а привязка данных будет использовать get():
private string text;
public string Text
{
get
{
if (text== null)
return "default value";
else
return this.text;
}
set { this.text= value; }
}
Однако, если вы хотите сделать это в Pure XAML, вы можете использовать для этого DataTrigger:
<TextBlock Text = "{Binding MyText}">
<TextBlock.Style>
<Style TargetType = "{x:Type TextBlock }">
<Style.Triggers>
<DataTrigger Binding = "{Binding MyText}" Value = "{x:Null}">
<Setter Property = "Text" Value = "DefaultValue"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
mhh.. вы могли бы использовать ValueConverter... но я думаю, что это не тот ответ, который вы ищете. В этом случае ответ НЕТ, вы не можете сделать это в чистом XAML только менее удобными способами, такими как ValueConverter или DataTrigger, который заменяет текст, если значение равно null.
я добавил чистый вариант XAML с помощью DataTrigger
Ах, да, триггер данных… наверное, в таком случае это было бы правильно. Спасибо! Отмечу ответ, как только он позволит мне
Рад, что смог помочь :) Пожалуйста, отметьте это как ответ, если он помог вам, чтобы другие тоже могли его найти
Конечно, я могу, но остается вопрос, смогу ли я сделать то же самое из xaml/view, используя только привязку данных. Это скорее риторический вопрос ;)