DataTrigger.Value Egenskap

Definition

Hämtar eller anger det värde som ska jämföras med egenskapsvärdet för dataobjektet.

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

Egenskapsvärde

Standardvärdet är null. Se även avsnittet Undantag.

Attribut

Undantag

Uttryck stöds inte. Bindningar stöds inte.

Exempel

I följande exempel ItemsSource är värdet ListBox för är bunden till Places, ett ObservableCollection<T> av Place objekten. Place objekt har egenskaper Name och State.

Vart ListBoxItem och ett ListBox av objekten Place visas. I Style exemplet tillämpas på varje ListBoxItem.

DataTrigger Anges så att om State dataobjektet Place är "WA" anges förgrunden för motsvarande ListBoxItem till Röd.

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

I följande exempel visas två DataTriggers som definieras i en DataTemplate. DataTemplate Tillämpas på AuctionItem dataobjekt (visas inte i det här exemplet), som har egenskapen SpecialFeatures.

Den första DataTrigger anges så att om dataobjektet har värdet SpecialFeaturesColor, visas objektet med en DodgerBlue-bakgrund med marintitlar. Om dataobjektet har värdet SpecialFeaturesHighlight, blir det andra DataTrigger aktivt, vilket gör att objektet visas med en orange kantlinje med en stjärna.

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

Kommentarer

Användning av XAML-egenskapselement

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

Det här värdet jämförs med det egenskapsvärde som genereras av Binding egenskapen för DataTrigger. Jämförelsen är en referensjämlikhetskontroll. Om de två värdena är lika tillämpas de associerade åtgärderna eller setters.

Note

Du måste ange både Binding egenskaperna och Value på en DataTrigger för att datautlösaren ska vara meningsfull. Om en eller båda egenskaperna inte har angetts utlöses ett undantag.

Gäller för

Se även