Condividi tramite


DataTrigger.Value Proprietà

Definizione

Recupera o imposta il valore da confrontare con il valore della proprietà dell'oggetto dati.

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

Valore della proprietà

Object

Il valore predefinito è null. Vedere anche la sezione relativa alle eccezioni.

Attributi

Eccezioni

Le espressioni non sono supportate. Le associazioni non sono supportate.

Esempio

Nell'esempio seguente, l'oggetto dell'oggetto ItemsSource ListBox è associato a Place, un ObservableCollection<T> oggetto Place . Gli oggetti Place hanno proprietà Name e State.

Ognuno ListBoxItem di essi ListBox visualizza un oggetto Place . Nell'esempio Style viene applicato a ogni ListBoxItemoggetto .

L'oggetto DataTrigger viene specificato in modo che se l'elemento dati State of the Place è "WA" (WA), il primo piano del corrispondente ListBoxItem è impostato su Rosso.

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

L'esempio seguente mostra due DataTriggers definiti in un DataTemplateoggetto . L'oggetto DataTemplate viene applicato agli oggetti dati AuctionItem (non visualizzati in questo esempio), che hanno la proprietà SpecialFeatures. Per l'esempio completo, vedere Demo data binding .

Il primo DataTrigger viene specificato in modo che se l'oggetto dati ha un valore SpecialFeatures di Color, l'elemento viene visualizzato con uno sfondo DodgerBlue con titoli Navy. Se l'oggetto dati ha un valore SpecialFeatures di Highlight, il secondo DataTrigger sarà attivo, causando la visualizzazione dell'elemento con un bordo Arancione con una stella.

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

Commenti

Utilizzo della sintassi XAML per elementi proprietà

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

Questo valore viene confrontato con il Binding valore della proprietà prodotto dalla proprietà di DataTrigger. Il confronto è un controllo di uguaglianza dei riferimenti. Se i due valori sono uguali, vengono applicate le azioni o i setters associati.

Si noti che è necessario specificare sia le Binding proprietà e Value in un DataTrigger trigger di dati che siano significative. Se una o entrambe le proprietà non sono impostate, verrà generata un'eccezione.

Si applica a

Vedi anche