#c# #wpf #data-binding #textbox
#c# #wpf #привязка данных #текстовое поле
Вопрос:
Просто из интереса….
В случае, если у меня есть ViewModel с неинициализированной строкой, которая привязана к текстовому полю, я могу использовать TargetNullValue
для отображения значения по умолчанию. Однако мне было интересно, могу ли я использовать то же значение для обновления строки в случае, если это так null
?
В основном вместо
set
{
if(value != null) text = value;
else value = "defaultstring";
OnPropertyChanged();
}
просто сделайте то же самое из привязки данных с помощью TargetNullValue
.
Ответ №1:
Вы можете манипулировать средством получения, так как привязка данных будет использовать get():
private string text;
public string Text
{
get
{
if (text== null)
return "default value";
else
return this.text;
}
set { this.text= value; }
}
Однако, если вы хотите сделать это в чистом 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>
Комментарии:
1. Конечно, я могу, но остается вопрос, могу ли я сделать то же самое из xaml / view, используя только привязку данных. Это скорее риторический вопрос 😉
2. mhh.. вы могли бы использовать ValueConverter … но я думаю, что это не тот ответ, который вы ищете. В этом случае ответ ОТРИЦАТЕЛЬНЫЙ, вы не можете сделать это в чистом XAML, только менее удобными способами, такими как ValueConverter или DataTrigger, который заменяет текст, если значение равно null.
3. я добавил вариант чистого XAML с
DataTrigger
4. Ах да, триггер данных …. вероятно, в таком случае было бы правильным. Спасибо! Отметит ответ, как только он сообщит мне
5. Рад, что смог помочь 🙂 Пожалуйста, отметьте это как ответ, если это помогло вам, чтобы другие тоже могли его найти