值不为 Null 的数据触发器
Data Trigger where value is not Null
我想设置一些值不为空的文本。
XAML:
<TextBlock >
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Text" Value="solved"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Report}" Value="{x:Null}">
<Setter Property="Text" Value=""/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
注意:这里的 Report 是 STRING,它有一些随机值,例如(例如 11,112,11a)
每一行都显示已解决,这似乎是数据触发器不起作用。
但是它使用这个随机值的代码(例如 11,112,11a)
<TextBlock Text="{Binding Report}"/>
我想要 Solved as text 而不是那个随机值(例如 11,112,11a)否则 blank 其中没有值。
您可以像这样使用转换器:
xaml
:
xmlns:cnv="clr-namespace:Converters"
...
<TextBlock Text="{Binding Report, Converter={cnv:CustomNullToStringConverter NotNullValue=Solved,NullValue=''}}"/>
转换器:
class CustomNullToStringConverter : MarkupExtension, IValueConverter
{
public string NullValue { get; set; }
public string NotNullValue { get; set; }
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is string && String.IsNullOrEmpty(value as string)) return NullValue;
if (value == null) return NullValue;
return NotNullValue;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
我想设置一些值不为空的文本。
XAML:
<TextBlock >
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Text" Value="solved"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Report}" Value="{x:Null}">
<Setter Property="Text" Value=""/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
注意:这里的 Report 是 STRING,它有一些随机值,例如(例如 11,112,11a)
每一行都显示已解决,这似乎是数据触发器不起作用。
但是它使用这个随机值的代码(例如 11,112,11a)
<TextBlock Text="{Binding Report}"/>
我想要 Solved as text 而不是那个随机值(例如 11,112,11a)否则 blank 其中没有值。
您可以像这样使用转换器:
xaml
:
xmlns:cnv="clr-namespace:Converters"
...
<TextBlock Text="{Binding Report, Converter={cnv:CustomNullToStringConverter NotNullValue=Solved,NullValue=''}}"/>
转换器:
class CustomNullToStringConverter : MarkupExtension, IValueConverter
{
public string NullValue { get; set; }
public string NotNullValue { get; set; }
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value is string && String.IsNullOrEmpty(value as string)) return NullValue;
if (value == null) return NullValue;
return NotNullValue;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}