Поделиться через


DataTrigger.Value Свойство

Определение

Получает или задает значение для сравнения со значением свойства объекта данных.

public:
 property System::Object ^ Value { System::Object ^ get(); void set(System::Object ^ value); };
[System.Windows.Localizability(System.Windows.LocalizationCategory.None, Readability=System.Windows.Readability.Unreadable)]
[System.Windows.Markup.DependsOn("Binding")]
public object Value { get; set; }
[<System.Windows.Localizability(System.Windows.LocalizationCategory.None, Readability=System.Windows.Readability.Unreadable)>]
[<System.Windows.Markup.DependsOn("Binding")>]
member this.Value : obj with get, set
Public Property Value As Object

Значение свойства

Значение по умолчанию — null. Также см. раздел "Исключения".

Атрибуты

Исключения

Выражения не поддерживаются. Привязки не поддерживаются.

Примеры

В следующем примере ItemsSource свойство объекта ListBox привязано к объектам Place, а ObservableCollection<T> — к объектам Place . Объекты Place имеют свойства Name и State.

Каждый ListBoxItem из ListBox отображает объект Place . в Style примере применяется к каждому ListBoxItemобъекту .

Задается DataTrigger таким образом, что если для элемента данных Place задано значение "WA", то для переднего плана соответствующего ListBoxItem объекта задано значение Red.

<Window.Resources>
  <c:Places x:Key="PlacesData"/>

  <Style TargetType="ListBoxItem">
    <Style.Triggers>
      <DataTrigger Binding="{Binding Path=State}" Value="WA">
        <Setter Property="Foreground" Value="Red" />
      </DataTrigger>	
      <MultiDataTrigger>
        <MultiDataTrigger.Conditions>
          <Condition Binding="{Binding Path=Name}" Value="Portland" />
          <Condition Binding="{Binding Path=State}" Value="OR" />
        </MultiDataTrigger.Conditions>
        <Setter Property="Background" Value="Cyan" />
      </MultiDataTrigger>
    </Style.Triggers>
  </Style>

  <DataTemplate DataType="{x:Type c:Place}">
    <Canvas Width="160" Height="20">
      <TextBlock FontSize="12"
             Width="130" Canvas.Left="0" Text="{Binding Path=Name}"/>
      <TextBlock FontSize="12" Width="30"
                 Canvas.Left="130" Text="{Binding Path=State}"/>
    </Canvas>
  </DataTemplate>
</Window.Resources>

<StackPanel>
  <TextBlock FontSize="18" Margin="5" FontWeight="Bold"
    HorizontalAlignment="Center">Data Trigger Sample</TextBlock>
  <ListBox Width="180" HorizontalAlignment="Center" Background="Honeydew"
    ItemsSource="{Binding Source={StaticResource PlacesData}}"/>
</StackPanel>

В следующем примере показаны два DataTriggerэлемента , которые определены в DataTemplate. Объект DataTemplate применяется к объектам данных AuctionItem (не показан в этом примере), которые имеют свойство SpecialFeatures. Полный пример см. в разделе Демонстрация привязки данных .

Первый DataTrigger задается таким образом, что если объект данных имеет значение SpecialFeaturesColor, элемент отображается с фоном DodgerBlue с названиями военно-морского флота. Если объект данных имеет значение SpecialFeatures , равное Highlight, то вторая DataTrigger будет активной, в результате чего элемент будет отображаться с оранжевой границей со звездочкой.

<DataTemplate.Triggers>
    <DataTrigger Binding="{Binding Path=SpecialFeatures}">
        <DataTrigger.Value>
            <src:SpecialFeatures>Color</src:SpecialFeatures>
        </DataTrigger.Value>
      <DataTrigger.Setters>
        <Setter Property="BorderBrush" Value="DodgerBlue" TargetName="border" />
        <Setter Property="Foreground" Value="Navy" TargetName="descriptionTitle" />
        <Setter Property="Foreground" Value="Navy" TargetName="currentPriceTitle" />
        <Setter Property="BorderThickness" Value="3" TargetName="border" />
        <Setter Property="Padding" Value="5" TargetName="border" />
      </DataTrigger.Setters>
    </DataTrigger>
    <DataTrigger Binding="{Binding Path=SpecialFeatures}">
        <DataTrigger.Value>
            <src:SpecialFeatures>Highlight</src:SpecialFeatures>
        </DataTrigger.Value>
        <Setter Property="BorderBrush" Value="Orange" TargetName="border" />
        <Setter Property="Foreground" Value="Navy" TargetName="descriptionTitle" />
        <Setter Property="Foreground" Value="Navy" TargetName="currentPriceTitle" />
        <Setter Property="Visibility" Value="Visible" TargetName="star" />
        <Setter Property="BorderThickness" Value="3" TargetName="border" />
        <Setter Property="Padding" Value="5" TargetName="border" />
    </DataTrigger>
</DataTemplate.Triggers>

Комментарии

Использование элемента свойства XAML

<object>  
  <object.Value>  
    Value  
  </object.Value>  
</object>  

Это значение сравнивается со значением свойства , созданным Binding свойством DataTriggerобъекта . Данное сравнение является проверкой равенства ссылок. Если эти два значения равны, применяются связанные действия или методы задания.

Обратите внимание, что необходимо указать свойства Binding и Value в объекте , DataTrigger чтобы триггер данных был осмысленным. Если одно или оба свойства не заданы, будет выдано исключение.

Применяется к

См. также раздел