Hãy nói rằng tôi có các lớp học đơn giản sau đây:Sử dụng các ràng buộc trong tình trạng 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; }
}
Bây giờ tôi có một mạng lưới với một thể hiện của lớp PersonHolder như DataContext
, và trong lưới Tôi có một StackPanel
đó là ràng buộc để các CurrentPerson
của PersonHolder
- hiển thị dữ liệu của nó:
<Grid>
<StackPanel x:Name="PersonPanel" DataContext="{Binding CurrentPerson}">
<TextBlock Text="{Binding Id}" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
</Grid>
Vì vậy - cho câu hỏi: Làm thế nào tôi có thể cung cấp cho các StackPanel
một nền màu xanh lá cây khi CurrentPerson
có Id
khớp với số ActiveId
của số PersonHolder
(vâng, rất hữu ích, nhưng đây chỉ là một ví dụ cực kỳ đơn giản ..). Suy nghĩ của tôi là đây là một cái gì đó sử dụng một kích hoạt cho, nhưng tôi có thể sử dụng bindings trong giá trị điều kiện kích hoạt của tôi? Nếu vậy tôi có thể làm một cái gì đó như thế này:
<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>
Nhưng điều này không hiệu quả. Làm sao tôi có thể giải quyết việc này?