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 привязка объекта привязана к Placesобъекту ObservableCollection<T>Place.ListBox
Place объекты имеют свойства Name и State.
Каждый из ListBoxItem них ListBox отображает Place объект. В Style примере применяется к каждому ListBoxItem.
Указан такой параметр DataTrigger , что если State элемент данных имеет значение WA, то для переднего Place плана соответствующего 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 указан таким образом, что если объект данных имеет SpecialFeatures значение Color, элемент отображается с фоном 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, необходимо указать как свойства, DataTrigger так и Value свойства триггера данных. Если одно или оба свойства не заданы, создается исключение.