【问题标题】:Telerik's RadDataGrid cell content textbox binding for UWPTelerik 的 UWP 的 RadDataGrid 单元格内容文本框绑定
【发布时间】:2018-06-08 09:54:01
【问题描述】:

我们使用 DataGridTemplateColumn 作为网格来显示列的 texbox。通过 Prism MVVM,如果文本框值已更改,我们需要更新网格中的其他列。 前任。我的 RadDataGrid 中有 3 列,当我更新 data1 列时, data3 列将自动更新(data1 文本框值 + data2 值)。

谢谢你的帮助~

<telerikGrid:RadDataGrid
x:Name="DataGrid"
ItemsSource="{x:Bind ViewModel.DataList,Mode=TwoWay}">
<telerikGrid:RadDataGrid.Columns>
    <telerikGrid:DataGridTemplateColumn Header="Data1" >
                            <telerikGrid:DataGridTemplateColumn.CellContentTemplate>
                                <DataTemplate>
                                    <TextBox Text="{Binding Data1, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left"  VerticalAlignment="Center" MinWidth="100" />
                                </DataTemplate>
                            </telerikGrid:DataGridTemplateColumn.CellContentTemplate>
                            </telerikGrid:DataGridTemplateColumn>
<telerikGrid:DataGridTextColumn Header="Data2" PropertyName="Data2" CanUserResize="False"/>                            
<telerikGrid:DataGridTextColumn Header="Data3" PropertyName="Data3" CanUserResize="False"/>              

【问题讨论】:

  • 这对我有用,非常感谢!

标签: uwp grid prism


【解决方案1】:

例如。我的 RadDataGrid 中有 3 列,当我更新 data1 列时,data3 列将自动更新(data1 文本框值 + data2 值)。

根据您的要求,您可以创建包含 Data1 Data2 Data3 三个属性的 Item 类,如下所示。

public class Item : INotifyPropertyChanged
{
    private string _data1;

    public string Data1
    {
        get
        {
            return _data1;
        }
        set
        {
            _data1 = value;

            this.Data3 = Data1 + Data2;
            OnPropertyChanged();
        }
    }


    private string _data2;

    public string Data2
    {
        get
        {
            return _data2;
        }
        set
        {
            _data2 = value;
            OnPropertyChanged();
        }
    }

    private string _data3;

    public string Data3
    {
        get
        {
           return _data1 + _data2;
        }
        set
        {
            _data3 = value;
            OnPropertyChanged();
        }
    }
    public event PropertyChangedEventHandler PropertyChanged;
    private void OnPropertyChanged([CallerMemberName] string PropertyName = null)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));
        }
    }
}

关键是你需要在Data1的set方法中修改Data3的值。而当你输入一些文字修改Data1'的值时,Data3会自动改变。

这是您可以参考的code sample

【讨论】:

  • 非常感谢您的回答,这对我有用。
  • 你好,还有一个问题是,如果 ObservableCollection 集合中的一个项目的 data2 发生了变化,我怎样才能得到通知?由于 data1 和 data2 和 data3 是 int 类型,所以我的 viewmodel 中有一个总数 data2 字段,现在 data3 将由 data2 更新自动更新。但如何重新计算总数据量?谢谢
猜你喜欢
  • 2018-05-20
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
  • 2020-01-08
  • 1970-01-01
  • 2020-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多