Триггер данных, где значение не равно нулю - PullRequest
0 голосов
/ 17 января 2019

Я хочу установить текст, значение которого не равно нулю.
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>

Примечание. Здесь Отчет равен STRING , который имеет некоторое случайное значение, например (например, 11,112,11a)

показывает решено в каждой строке, которая кажется, что триггер данных не работает.

но он работает с этим кодом с этим случайным значением (например, 11,112,11a)

 <TextBlock Text="{Binding Report}"/>

Я хочу Решено в виде текста вместо случайных значений (например, 11,112,11a), в противном случае пусто там, где нет значения.

1 Ответ

0 голосов
/ 17 января 2019

Вы можете использовать конвертер так:

xaml * * 1004

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();
    }
}
...