我有一个ListBox,我在其中为其项目定义了一个DataTemplate:
<ListBox.ItemTemplate> <DataTemplate> <Border> <TextBlock Text="{Binding Name}" /> </Border> </DataTemplate> </ListBox.ItemTemplate>
public class MyItem { public string Name { get; set; } }
现在我需要更改ListBox项的背景,例如选择项时:
private void ListBox_SelectionChanged(object sender,SelectionChangedEventArgs e) { if (e.AddedItems.Count == 1) { var item = e.AddedItems.First() as MyItem; } }
问题是该项是MyItem类型,而我也需要访问Border和TextBlock对象.
解决方法
您可以在边框样式上使用精美的RelativeSource绑定:
<Border.Style> <Style targettype="Border"> <Style.Triggers> <DataTrigger Binding="{Binding IsSelected,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListBoxItem}}" Value="True"> <Setter Property="Background" Value="Pink"/> </DataTrigger> </Style.Triggers> </Style> </Border.Style>
这将创建一个DataTrigger,它将绑定到父ListBoxItem的IsSelected属性,当它被选中时,它会将Border的背景颜色设置为Pink.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。