DataGrid在WPF

时间:2018-04-12 11:11:27

标签: wpf

我试图在WPF中使用MVVM方法绑定DataGrid,模型正在获取值,但DataGrid中没有显示任何内容 以下是我的代码

 public class TalleyEditorGrid : INotifyPropertyChanged
{

    #region Properties
    private string _Quantity;
    private string _Ft;
    private string _Inch;
    private string _Comment;

    public string Quantity { get { return _Quantity; } set { _Quantity = value; NotifyPropertyChanged("Quantity"); } }
    public string Ft { get { return _Ft; } set { _Ft = value; NotifyPropertyChanged("Ft"); } }
    public string Inch { get { return _Inch; } set { _Inch = value; NotifyPropertyChanged("Inch"); } }
    public string Comment { get { return _Comment; } set { _Comment = value; NotifyPropertyChanged("Comment"); } }
    #endregion

    public event PropertyChangedEventHandler PropertyChanged;
    public void NotifyPropertyChanged(string propName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName)); }
}

在我的xaml.cs

 private ObservableCollection<TalleyEditorGrid> _TalleyEditorGrid = new ObservableCollection<TalleyEditorGrid>();    
    public ObservableCollection<TalleyEditorGrid> TalleyEditorCol
    {
        get { return _TalleyEditorGrid; } 
    }

点击按钮我正在填写此集合

  _TalleyEditorGrid.Add(new TalleyEditorGrid() { Quantity = Q, Ft = FT, Inch = In, Comment = Comment});

Xaml如下

 <DataGrid x:Name="TalleyEditor" ItemsSource="{Binding Path=TalleyEditorCol}"  AutoGenerateColumns="True" Visibility="Collapsed" 
              CanUserAddRows="False"
              HorizontalGridLinesBrush="{x:Null}" 
              VerticalGridLinesBrush="Silver" 
              Background="White"
              HorizontalScrollBarVisibility="Hidden"
              VerticalScrollBarVisibility="Hidden"
              SelectionMode="Single"
              SelectionUnit="FullRow"
              CanUserReorderColumns="True"
              CanUserSortColumns="True"  DataGridCell.GotFocus="TalleyEditor_GotFocus" 
              RowHeaderWidth="0" HorizontalAlignment="Left" VerticalAlignment="Top" RowHeight="17" ColumnHeaderHeight="21" PreviewKeyDown="TalleyEditor_PreviewKeyDown" LostFocus="TalleyEditor_LostFocus" CellEditEnding="myDG_CellEditEnding">

1 个答案:

答案 0 :(得分:0)

将窗口的DataContext设置为自身:

public MainWindow()
{
    InitializeComponent();
    DataContext = this;
}

或设置DataContext的{​​{1}}:

DataGrid

如果您将public MainWindow() { InitializeComponent(); TalleyEditor.DataContext = this; } 放在另一个DataGrid中,则需要使用DataGrid来绑定父窗口的属性:

{RelativeSource}