首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >索引属性的INotifyPropertyChanged

索引属性的INotifyPropertyChanged
EN

Stack Overflow用户
提问于 2018-10-31 07:07:47
回答 1查看 161关注 0票数 1

所以我有一个如下的类:

public class Data : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    public object this[string field]
    {
        get => // gets the value
        set
        {
            // sets the value
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Item[]"));
        }
    }
}

在我看来:

<DataGrid
    AutoGenerateColumns="False"
    ItemsSource="{Binding Rows}">
    <DataGrid.Columns>
        <DataGridTextColumn Header="[some_field]" Binding="{Binding Path=[some_field]}" />
        <DataGridTextColumn Header="[some_other_field]" Binding="{Binding Path=[some_other_field]}" />
    </DataGrid.Columns>
</DataGrid>

这可以很好地工作,但当PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Item[]"));发生时,DataGrid将获取Data中的字段"some_field"和字段"some_other_field",而我还没有找到一种方法来使用PropertyChanged,使其只刷新已更新的字段。

我尝试过"Item[" + field + "]""[" + field + "]"field,但是没有成功。这是可能的/受支持的,还是我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-31 10:23:56

我认为这是不可能的,至少对于WPF和.NET框架是不可能的。

建议/解决方法:如果我们向视图模型添加一些只读属性会怎么样?示例:

public class Data : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    public object this[string field]
    {
        get => // gets the value
        set
        {
            // sets the value
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(field));
        }
    }

    public object some_field => this[nameof(some_field)];
    public object some_other_field=> this[nameof(some_other_field)];
}

和XAML:

<DataGrid
    AutoGenerateColumns="False"
    ItemsSource="{Binding Rows}">
    <DataGrid.Columns>
        <DataGridTextColumn Header="[some_field]" Binding="{Binding Path=some_field}" />
        <DataGridTextColumn Header="[some_other_field]" Binding="{Binding Path=some_other_field}" />
    </DataGrid.Columns>
</DataGrid>

它并没有具体回答您的问题,但它确实提供了一种方法来控制视图的刷新程度。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53074122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档