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

如题所述

 

这个分几步可以解决。

 

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

 

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

 

代码贴在下面:

 

前台Code:

       <ListBox x:Name="listBoxTest" Grid.Column="0" Grid.Row="1" SelectionChanged="listBoxTest_SelectionChanged">

            <ListBox.ItemTemplate>

                <DataTemplate>

                    <StackPanel>

                        <TextBlock Width="20" Height="20" Text="{Binding}"></TextBlock>

                    </StackPanel>

                </DataTemplate>

            </ListBox.ItemTemplate>

        </ListBox>

 

后台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;
            }
        }

 

温馨提示:内容为网友见解,仅供参考
无其他回答

Warning: Invalid argument supplied for foreach() in /www/wwwroot/aolonic.com/skin/templets/default/contents.html on line 45
相似回答