【问题标题】:Why does not update my GridView?为什么不更新我的 GridView?
【发布时间】: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 代码。

标签: c# xaml gridview


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 2014-08-07
    • 2017-06-28
    • 2011-03-15
    相关资源
    最近更新 更多