为什么不更新我的GridView
本文关键字:GridView 我的 更新 为什么不 | 更新日期: 2023-09-27 17:58:15
我的问题是关于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;
}
}
clickitem
的类,无论它是什么,都必须实现INotifyPropertyChanged接口,并且State
属性在设置时必须触发更改通知。否则,WPF不会知道您更改了属性的值,也不会更新绑定控件。如果没有,则可以在设置State
后对绑定控件的BindingExpression调用UpdateTarget(),但此时,使用数据绑定是否仍然有意义?