【发布时间】:2014-10-07 02:09:03
【问题描述】:
我有一个要求,其中 TextBox 使用 ViewModel 绑定到属性。默认值为-1,但我不想向用户显示为-1,而是显示为“默认”。我的项目中很多地方都有类似的文本框。因此,创建了一种样式并在 DataTrigger 中设置了 Text 属性,但不知何故,代码无法正常工作。 我还在学习 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>
我想要这种行为,如果 Binding 值为 -1,则将 Default 显示为文本,或者如果 Binding 值为 -1,则显示该文本。如果用户在编辑框中输入文本,通常是数字,则必须将其更新到底层绑定。
【问题讨论】:
-
你绑定的属性是字符串还是其他类型?
-
您必须从 DataTrigger 的绑定中删除
RelativeSource。它仍然只会设置Foreground属性,但不会替换Text。只需使用绑定转换器即可。 -
这只是绑定库中
FallbackValue的工作吗? -
@LeeO。绑定到整数属性类型。
标签: c# wpf xaml binding datatrigger