查找与Silverlight ItemsControl中的项对应的UI元素

时间:2008-11-12 13:39:05

标签: silverlight itemscontrol

我有一个由Silverlight ItemsControl显示的字符串列表。 DataTemplate是一个边框控件,其TextBlock作为其子元素。如何访问与项目对应的边框控件?例如,我可能想要这样做来改变背景颜色。

3 个答案:

答案 0 :(得分:2)

更简单的方法是抓取文本块的Parent并将其转换为Border。这是一个简单的例子:

的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);
}

该示例通过抓取文本框的父级来设置边框上的背景。

答案 1 :(得分:0)

您可以覆盖ItemsControl.GetContainerForItemOverride方法并将对象 - 容器对保存在字典中。

答案 2 :(得分:0)