选择项目时更改ListViewItem内容的颜色

时间:2016-11-17 09:58:14

标签: c# wpf xaml listview

我想在选择Fill时反映FrameworkElementListViewItem的颜色(ListViewItem)。

问题在于,应该具有所选颜色的FrameworkElement位于嵌套DataTemplate中的另一个DataTemplateSelector中。

示例:

         <ListView>
            <ListViewItem>
                <ContentPresenter>
                    <ContentPresenter.ContentTemplateSelector>
                        <selector:IconTypeSelector>
                            <selector:IconTypeSelector.SuperImportantIcon>
                                <DataTemplate>
                                    <Rectangle Width="27"
                                           Height="27"
                                           Fill="{DynamicResource ColorThatShouldChange}"><!--This is what i want to have the font color of my ListViewElements  -->
                                    </Rectangle>
                                </DataTemplate>
                            </selector:IconTypeSelector.SuperImportantIcon>
                        </selector:IconTypeSelector>
                    </ContentPresenter.ContentTemplateSelector>
                </ContentPresenter>
            </ListViewItem>
        </ListView>

最佳案例场景是: 我的FrameworkElement(示例中为Rectangle)与ListViewItem中文本的字体颜色绑定的颜色相同,但在选中时会反转。

2 个答案:

答案 0 :(得分:0)

阅读How to set a WPF ListView Selected Item color?WPF ListView Highlight Color don't change

你所要做的就是将你的颜色与Bordes的BackGround绑定。

答案 1 :(得分:-2)

您必须拥有所选项目的索引号。在后端代码上。找到索引并设置System.Drawing,Color Of your Choice。

 for (int i = 0; i < list.Items.Count; i++)
    {
        if (list.Items[i].Bounds.Contains(e.Location) == true)
        {
            list.Items[i].BackColor = Color.Blue; // highlighted item
        }
        else
        {
            list.Items[i].BackColor = SystemColors.Window; // normal item
        }
    }