WPF ListBox 重写后 怎么样才能保持 第一行选中后 颜色不变 其他行颜色改变 谢谢
1个回答
展开全部
这个分几步可以解决。
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;
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询