Telerik 针对 UWP 的 RadDataGrid 单元格内容文本框绑定

Telerik's RadDataGrid cell content textbox binding for UWP

我们在网格中使用了 DataGridTemplateColumn 来显示列的文本框。通过 Prism MVVM,如果文本框值已更改,我们需要更新网格中的其他列。 前任。当我更新 data1 列时,我的 RadDataGrid 中有 3 列, 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"/>              

ex. I have 3 columns in my RadDataGrid, when I updated data1 column, data3 column will be auto updated (data1 textbox value + data2 value).

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

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 你可以参考。