Sdílet prostřednictvím


DataTrigger.Value Vlastnost

Definice

Získá nebo nastaví hodnotu porovnat s hodnotou vlastnosti datového objektu.

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

Hodnota vlastnosti

Výchozí hodnota je null. Viz také část Výjimky.

Atributy

Výjimky

Výrazy nejsou podporovány. Vazby nejsou podporovány.

Příklady

V následujícím příkladu ItemsSource je objekt vázaný ListBox na Places, an ObservableCollection<T> of Place objekty. Objekty umístění mají vlastnosti Name a State.

Každý ListBoxItem z nich ListBox zobrazí objekt Place . Hodnota Style v příkladu se použije pro každou ListBoxItem.

Hodnota DataTrigger je určena tak, že pokud je stav datové položky místa "WA", pak je popředí odpovídajícího ListBoxItem objektu nastaveno na červenou.

<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>

Následující příklad ukazuje dvě DataTriggers, které jsou definovány v objektu DataTemplate. Použije DataTemplate se na datové objekty AuctionItem (v tomto příkladu nejsou uvedené), které mají vlastnost SpecialFeatures. Kompletní příklad najdete v ukázce datových vazeb .

První DataTrigger je zadán tak, že pokud má datový objekt hodnotu SpecialFeaturesColor, pak se položka zobrazí s pozadím DodgerBlue s názvy Navy. Pokud má datový objekt hodnotu SpecialFeatureszvýraznit, pak sekunda DataTrigger bude aktivní, což způsobí, že položka bude zobrazena s oranžovým ohraničením s hvězdičkou.

<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>

Poznámky

Použití elementu vlastnosti XAML

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

Tato hodnota se porovná s hodnotou vlastnosti vytvořenou Binding vlastností objektu DataTrigger. Porovnání je kontrola rovnosti odkazů. Pokud jsou tyto dvě hodnoty stejné, použijí se přidružené akce nebo settery.

Všimněte si, že je nutné zadat vlastnosti a BindingValue na objektu DataTrigger , aby aktivační událost dat byla smysluplná. Pokud jedna nebo obě vlastnosti nejsou nastavené, vyvolá se výjimka.

Platí pro

Viz také