为什么不更新我的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;
    }
}

为什么不更新我的GridView

clickitem的类,无论它是什么,都必须实现INotifyPropertyChanged接口,并且State属性在设置时必须触发更改通知。否则,WPF不会知道您更改了属性的值,也不会更新绑定控件。如果没有,则可以在设置State后对绑定控件的BindingExpression调用UpdateTarget(),但此时,使用数据绑定是否仍然有意义?