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

 我来答
wxwinter11
推荐于2016-06-29 · TA获得超过437个赞
知道答主
回答量:70
采纳率:0%
帮助的人:48.3万
展开全部
 

这个分几步可以解决。

 

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

 

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式