我想替换文字" 0"用""使用触发器..但得到以下编译错误。
'文本'属性不能从属性触发器设置,并且同时出现在触发器的条件中。
<TextBox MaxLength="10">
<TextBox.Style TargetType="{x:Type TextBox}" x:Key="d1">
<Style.Triggers>
<Trigger Property="Text" Value="0">
<Setter Property="Text" Value="" />
</Trigger>
</Style.Triggers>
</TextBox.Style>
</TextBox>
答案 0 :(得分:2)
正如错误消息明确告诉您的那样,您无法执行此操作。这与你触发的属性相同。
一些选项包括:
如果TextBox
绑定到源属性,则可以使用转换器转换字符串&#34; 0&#34;到string.Empty
:https://www.codeproject.com/Tips/868163/IValueConverter-Example-and-Usage-in-WPF
如果Text
属性绑定到string
属性,则只需返回string.Empty
而不是&#34; 0&#34;从这一个。
如果是int
属性,您可以将其类型更改为int?
并返回null
而不是0
。
如果Text
属性不受数据限制,您可以处理TextChanged
事件,如下所示:
private bool _handle = true;
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (_handle)
{
_handle = false;
TextBox textBox = sender as TextBox;
if (textBox.Text == "0")
textBox.Text = string.Empty;
_handle = true;
}
}
所以你有很多选择,但使用触发器不是其中之一。