繁体   English   中英

为什么不更新我的GridView?

[英]Why does not update my GridView?

我的问题是关于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(),但是到那时,使用数据绑定仍然有意义吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM