ListBoxItems:如何根据项目内容个性化项目呈现

时间:2017-04-14 09:31:13

标签: c# wpf xaml listbox

我想个性化这种类,如何在ListBox项目中可视化类的字段。

1)我尝试了各种使用XAML的方法。例如,我在DataTemplate中有各种面板,并使用ValueConverter来确定要使用哪个面板并隐藏其他面板。但是在布局和格式化变化时,这是非常令人困惑,困难和非常有限的。

2)然后我找到了第二种方法:我为要在ItemPanel中显示的类创建了一个AttachedProperty。在DataTemplate中,我附加了代表我的类的新AttachedProperty,并使用AttachedProperty的MetaData函数PropertyChangedCallback。让我们说,我将Border作为我的DataTemplate中唯一的控件。 PropertyChangedCallback获取Border和类对象。现在,我可以根据项目对象的值自定义创建边框内容(替换其Child属性)。

版本2工作得很好。每当向ListBox添加项目或更新项目属性时,ValueChangedCallback都会让我有机会调整外观。

但是如何根据选择状态或鼠标悬停状态更改边框内容(在我的DataTemplate中)?

对我来说重要的是,我可以用C#而不是XAML构建我的ItemPanel的内容,这样在布局和格式化方面没有限制。

0 个答案:

没有答案