我在XAML和C#中有一个WPF DataGrid,我想选择一行并在文本框中显示该行,它不是DataGridView
x:Name="dtGConsultas" ItemsSource= "{Binding }"
HorizontalAlignment="Left" Margin="12,3,0,0" Grid.Row="6" VerticalAlignment="Top"
Grid.ColumnSpan="5" Height="111" Width="598" Grid.RowSpan="3"
SelectionChanged="dtGConsultas_SelectionChanged"/>
答案 0 :(得分:2)
这可以通过以下几种方式完成:
SelectedItem
绑定到某个属性,然后将其显示TextBox
值绑定到DataGrid
' SelectedItem
TextBox
方法SelectionChanged
值
醇>
如果你要使用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
&#39; s 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>
Code-Behind(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();
}
}
答案 1 :(得分:0)
您还可以添加包含复选框的列并将其绑定。然后juste检查是否(Your_List.element.CheckBox == true)。你可以获得一个列表,列出你选中的元素