Dot-Net
在 DataTrigger 條件下使用綁定
假設我有以下簡單的類:
public class Person { public int Id { get; set; } public string Name { get; set; } } public class PersonHolder { public Person CurrentPerson { get; set; } public int ActiveId { get; set; } }現在我有一個帶有 PersonHolder 類實例的網
DataContext格,並且在網格中我有一個StackPanel綁定到CurrentPersonofPersonHolder- 顯示它的數據:<Grid> <StackPanel x:Name="PersonPanel" DataContext="{Binding CurrentPerson}"> <TextBlock Text="{Binding Id}" /> <TextBlock Text="{Binding Name}" /> </StackPanel> </Grid>所以 - 對於這個問題:當有一個匹配的(是的*,非常有用,但這只是一個非常簡化的例子..*)時,我怎樣才能給
StackPanel綠色背景。我的想法是這是一個使用觸發器的東西,但是我可以在我的觸發器條件值中使用綁定嗎?如果是這樣,我可以做這樣的事情:CurrentPerson``Id``ActiveId``PersonHolder<Grid x:Name="Foo"> <StackPanel x:Name="PersonPanel" DataContext="{Binding CurrentPerson}"> <TextBlock Text="{Binding Id}" /> <TextBlock Text="{Binding Name}" /> <StackPanel.Triggers> <DataTrigger Binding="{Binding Id}" Value="{Binding ElementName=Foo, Path=ActiveId}"> <Setter TargetName="PersonPanel" Property="Background" Value="Green" /> </DataTrigger> </StackPanel.Triggers> </StackPanel> </Grid>但這不起作用。我該如何解決這個問題?
您不能在 Value 屬性上使用綁定,但可以通過使用MultiBinding和IMultiValueConverter來解決這個問題。我會在例如 Window.Resources 中定義我
Trigger的Style,它會給出如下內容:<Window.Resources> <local:SomeMultiConverter x:Key="someMultiConverter" /> <Style x:Key="someStyle" TargetType="StackPanel"> <Setter Property="StackPanel.Background" Value="Red" /> <Style.Triggers> <DataTrigger Value="True"> <DataTrigger.Binding> <MultiBinding Converter="{StaticResource someMultiConverter}"> <Binding Path="Id"></Binding> <Binding ElementName="Foo" Path="DataContext.ActiveId"></Binding> </MultiBinding> </DataTrigger.Binding> <Setter Property="StackPanel.Background" Value="Green" /> </DataTrigger> </Style.Triggers> </Style> </Window.Resources> <Grid x:Name="Foo"> <StackPanel DataContext="{Binding CurrentPerson}" Style="{StaticResource someStyle}" > <TextBlock Text="{Binding Id}" /> <TextBlock Text="{Binding Name}" /> </StackPanel> </Grid>有關和的範例,請參見此連結。它們相當容易編寫。
MultiBinding``IMultiValueConverter