WPF ListBox 重写后 怎么样才能保持 第一行选中后 颜色不变 其他行颜色改变 谢谢

2025-04-27 07:17:44
推荐回答(1个)
回答1:

 

这个分几步可以解决。

 

1:在ListBox的SelectionChanged 事件中获得选中的Item的容器。注意难点在,这个Item不是数据而是容器,所以得用ItemContainerGenerator获取。详细查看后面代码。

 

2:SelectedIndex 为0则设置选中项的背景为需要的颜色。 这里我使用红色,即选中后,颜色一直不变为红色(其它颜色值需要换成你想要的)。其它行则保持原来的样式。

 

代码贴在下面:

 

前台Code:

       

            

                

                    

                        

                    


                


            


        

 

后台Code:

        private void listBoxTest_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (this.listBoxTest.SelectedIndex == 0)
            {
                // Get the visual tree original source.
                ListBoxItem lvi = this.listBoxTest.ItemContainerGenerator.ContainerFromIndex(0) as ListBoxItem;
                lvi.Background = Brushes.Red;
            }
        }