文本框中的WPF DataGrid

时间:2017-03-13 09:41:07

标签: c# wpf wpfdatagrid

我在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"/>

2 个答案:

答案 0 :(得分:2)

这可以通过以下几种方式完成:

  1. 您可以将SelectedItem绑定到某个属性,然后将其显示
  2. 您可以将TextBox值绑定到DataGrid' SelectedItem
  3. 您可以在TextBox方法
  4. 的每次调用中设置SelectionChanged

    如果你要使用MVVM模式,你应该选择第一个选项。

    其他第二 第三选项对您有用,但在较大(复杂)的应用程序中,此解决方案会导致轻松读取代码的问题。保持它。 不推荐。

    <强>示例:

    1. MVVM方法
    2. 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}"/>
      
      1. TB值绑定到DataGrid&#39; s SelectedItem
      2. 的值

        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>();
        }
        
        1. 方法更新(代码隐藏):
        2. 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)。你可以获得一个列表,列出你选中的元素

相关问题