【问题标题】:Find UI element corresponding to an item in a Silverlight ItemsControl查找与 Silverlight ItemsControl 中的项目对应的 UI 元素
【发布时间】:2008-11-12 13:39:05
【问题描述】:

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

【问题讨论】:

    标签: silverlight itemscontrol


    【解决方案1】:

    更简单的方法是获取文本块的父级并将其转换为边框。这是一个简单的例子:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        看到这个:http://msdn.microsoft.com/en-us/library/bb613579.aspx 和这个:http://blogs.msdn.com/wpfsdk/archive/2007/04/16/how-do-i-programmatically-interact-with-template-generated-elements-part-ii.aspx。不幸的是,它在 SL 中不起作用,因为 SL DataTemplate 类没有 FindName 方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-23
          相关资源
          最近更新 更多