我们已经使用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"/>
答案 0 :(得分:0)
离。我的RadDataGrid中有3列,当我更新data1列时,data3列将自动更新(data1文本框值+ data2值)。
根据您的要求,您可以创建包含Item
Data1
Data2
三个属性的Data3
类,如下所示。
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&#39; Data3
方法中的值set
。当你修改Data1&#39;键入一些单词,Data3
将自动更改。
这是你可以参考的code sample。