查找与Silverlight Items控件中的项对应的UI元素
我有一个由Silverlight Items控件显示的字符串列表。DataTemplate是一个边框控件,其子控件为TextBlock。如何访问与项目对应的边界控件?例如,我可能希望这样做来更改背景颜色。您可以覆盖ItemsControl.GetContainerForItemOverride方法并将对象容器对保存在字典中。一种更简单的方法是获取textblock的父对象并将其转换为边框。下面是一个快速的例子: Xaml 该示例通过抓取文本框的父对象来设置边框上的背景 看看这个:还有这个:。不幸的是,它在SL中不起作用,因为SL DataTemplate类没有FindName方法查找与Silverlight Items控件中的项对应的UI元素,silverlight,itemscontrol,Silverlight,Itemscontrol,我有一个由Silverlight Items控件显示的字符串列表。DataTemplate是一个边框控件,其子控件为TextBlock。如何访问与项目对应的边界控件?例如,我可能希望这样做来更改背景颜色。您可以覆盖ItemsControl.GetContainerForItemOverride方法并将对象容器对保存在字典中。一种更简单的方法是获取textblock的父对象并将其转换为边框。下面是一个快速的例子: Xaml 该示例通过抓取文本框的父对象来设置边框上的背景 看看这个:还有这个:。不幸
<Grid>
<ItemsControl x:Name="items">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border>
<TextBlock MouseEnter="TextBlock_MouseEnter" MouseLeave="TextBlock_MouseLeave" Text="{Binding}" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
public Page()
{
InitializeComponent();
items.ItemsSource = new string[] { "This", "Is", "A", "Test" };
}
private void TextBlock_MouseEnter(object sender, MouseEventArgs e)
{
var tx = sender as TextBlock;
var bd = tx.Parent as Border;
bd.Background = new SolidColorBrush(Colors.Yellow);
}
private void TextBlock_MouseLeave(object sender, MouseEventArgs e)
{
var tx = sender as TextBlock;
var bd = tx.Parent as Border;
bd.Background = new SolidColorBrush(Colors.White);
}