这可以通过多种方式完成:
- 您可以将
SelectedItem 绑定到某个属性,然后显示它
- 您可以将
TextBox 值绑定到DataGrid 的SelectedItem
- 您可以在每次调用
SelectionChanged 方法时设置TextBox 值
如果您要使用 MVVM 模式,您应该选择 1st 选项。
其他 2nd 和 3rd 选项对您很有用,但在更大(复杂)的应用程序中,此解决方案会导致难以轻松读取代码并对其进行维护。 不推荐。
示例:
- MVVM 方法
ViewModel 文件:
using using System.Collections.ObjectModel;
public class MyViewModel
{
//add implementation of INotifyPropertyChange & propfull
public ObservableCollection<MyItem> MySrcList { get; set; }
//add implementation of INotifyPropertyChange & propfull
public MyItem SelectedItem { get; set; }
}
查看:
<UserControl ...
xmlns:local="clr-namespace:MyProject">
<UserControl.DataContext>
<local:MyProject />
</UserControl.DataContext>
...
<DataGrid
ItemsSource="{Binding MySrcList}"
SelectedItem="{Binding SelectedItem}"/>
- 将
TB 值绑定到DataGrid 的SelectedItem 值
Xaml 文件:
<Grid>
<DataGrid
x:Name="dtGConsultas"
ItemsSource="{Binding MySrcList}"/>
<TextBox Text="{Binding dtGConsultas.SelectedItem, Mode=OneWay}"/>
</Grid>
代码隐藏(C# 文件):
public class MyUserControl
{
public MyUserControl()
{
this.InitializeComponent();
this.DataContext = this;
}
public List<MyItem> MySrcList = new List<MyItem>();
}
- 方法更新(代码隐藏):
Xaml 文件:
<Grid>
<DataGrid
x:Name="dtGConsultas"
ItemsSource="{Binding MySrcList}"
SelectionChanged="dtGConsultas_SelectionChanged"/>
<TextBox x:Name="MyTbx"/>
</Grid>
代码隐藏(C# 文件):
public class MyUserControl
{
public MyUserControl()
{
this.InitializeComponent();
this.DataContext = this;
}
public List<MyItem> MySrcList = new List<MyItem>();
private void dtGConsultas_SelectionChanged( /* args */)
{
MyTbx.Text = dtGConsultas.SelectedItem.ToString();
}
}