У меня есть требование, в котором TextBox привязан к свойству с ViewModel. Значение по умолчанию равно -1, но я хочу показывать пользователю не -1, а "по умолчанию". У меня есть подобные текстовые поля во многих местах моего проекта. Итак, стиль был создан и задано свойство Text в DataTrigger, но почему-то код не работал. Я все еще изучаю Wpf.
Пожалуйста помоги.
XAML выглядит следующим образом.
<Window x:Class="TextBoxDefaultStyles.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TextBoxDefaultStyles"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Style TargetType="TextBox"
x:Key="DefaultStyle">
<Style.Triggers>
<DataTrigger Binding="{Binding Text, RelativeSource={RelativeSource Self}}" Value="-1">
<Setter Property="Text" Value="Default"/>
<Setter Property="Foreground" Value="Gray"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<StackPanel>
<TextBox Text="{Binding Text}"
Style="{StaticResource DefaultStyle}"/>
<TextBox Text="Dummy"/>
</StackPanel>
I want to have the behavior, if the Binding value is -1, then show Default as text or if Binding value is <> -1 then show that text. If a user enters text in the editbox, usually numbers then that has to be updated to the underlying binding.
RelativeSource
из привязки в DataTrigger. Тем не менее, это только установит свойствоForeground
, но не заменитText
. Вместо этого просто используйте конвертер привязки. - person Clemens   schedule 13.08.2014FallbackValue
в базе привязок? - person Chris W.   schedule 13.08.2014