【发布时间】:2014-04-15 15:17:40
【问题描述】:
我的问题是关于ItemTemplateSelector。
我的模型中有一个名为State 的属性,根据State,我应用了两种不同的样式。我使用 SQLite 作为数据,但属性 State 标记有来自 SQLite 的属性 [ignore]。
当我点击 GridView 中的项目时,我需要更改样式。
private void productsDG_ItemClick(object sender, ItemClickEventArgs e)
{
var clickitem = ((Product)e.ClickedItem);
clickitem.State = true;
}
更改 GridView 的状态不会更新项目的 DataTemplate。 (DataTemplate 工作正常,我用两种状态对其进行了测试)。
自定义数据模板为:
public class CustomDataTemplateSelector : DataTemplateSelector
{
public DataTemplate defaultTemplate { get; set; }
public DataTemplate unavailable { get; set; }
protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
{
Product prod = (Product)item;
if (prod.State == true)
return defaultTemplate;
return unavailable;
}
}
【问题讨论】:
-
请发布您的 xaml 代码。