Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 静态资源中的数据触发器_C#_Wpf_Xaml_Data Binding_Datatrigger - Fatal编程技术网

C# 静态资源中的数据触发器

C# 静态资源中的数据触发器,c#,wpf,xaml,data-binding,datatrigger,C#,Wpf,Xaml,Data Binding,Datatrigger,我想制作一个模板样式,我可以将其用作静态资源,如下所示: <TextBox Style="{StaticResource CollapsingTextBox}" Text="{Binding SomeNullableValue}" /> <DataTrigger Binding="{Binding SomeNullableValue}" Value="{x:null}"> <Setter Property="Visibility" Value="

我想制作一个模板样式,我可以将其用作静态资源,如下所示:

<TextBox 
  Style="{StaticResource CollapsingTextBox}"
  Text="{Binding SomeNullableValue}" />
<DataTrigger Binding="{Binding SomeNullableValue}" Value="{x:null}">
    <Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>
但是如果我将数据触发器移动到可以重用的模板样式,那么直接绑定到binding属性(即
SomeNullableValue
)是没有好处的。相反,我需要绑定模板用户的绑定(如果有意义的话)


如何实现这种绑定?

尝试使用
Text
属性触发:

<Trigger Property="Text" Value="">
    <Setter Property="Visibility" Value="Collapsed" />
</Trigger>
<Trigger Property="Text" Value="{x:null}">
    <Setter Property="Visibility" Value="Collapsed" />
</Trigger>


几乎成功了。必须将其更改为
Value=”“
。不确定这是否与文本属性不可为空有关(即使基础属性为空)。不过,还是有一个简单的解决方案,谢谢:-)。文本是字符串。字符串可以是
null
。TextBox.Text不能通过编辑(删除所有符号)变成
null
,当binding属性为。有趣的问题是TextBlock是否具有相同的行为。我会保留两个触发器,以防万一:null和空字符串。这可能与我实际绑定到一个
十进制数?
(可为null的十进制数)有关。不过,这仍然是一种有趣的行为。使用双触发器的好主意。似乎TextBox.Text属性从不为null。参见此处示例:。另外,假设获取此属性将返回文本框内容的字符串副本。因此,
{x:Null}
触发器是冗余的。然而,拥有它并没有什么坏处,以防万一。