wpf - WPF Datgrid 未更新
问题描述
我在 UI 中更新 WPF Datagrid 时遇到问题。我正在尝试使用 MVVM。我正在使用一个可观察的集合:
public ObservableCollection<OCInspections> MyInspectionList
{
get { return _MyInspectionList; }
set { _MyInspectionList = value; OnPropertyChanged("MyInspectionList"); }
}
附加到 IcollectionView:
MyInspectionView = CollectionViewSource.GetDefaultView(MyInspectionList);
与财产...
public ICollectionView MyInspectionView
{
get { return _MyInspectionView; }
set { _MyInspectionView = value; OnPropertyChanged("MyInspectionView"); }
}
附加到数据网格项目源:
<DataGrid x:Name="InspectionGrid" Style="{StaticResource DataGridStyle}" SelectionUnit="FullRow" ItemsSource="{Binding MyInspectionView, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, diag:PresentationTraceSources.TraceLevel=High}" SelectedValue="{Binding Path=MySelectedInspection,Mode=TwoWay}" >
当我过滤网格时,UI 会更新:
public string ToggleText
{
get {
return _ToggleText ?? (_ToggleText = "Open Orders"); }
set {
_ToggleText = value;
OnPropertyChanged("ToggleText");
FilterMe();
}
}
private void FilterMe()
{
MyInspectionView.Filter = O =>
{
OCInspections P = O as OCInspections;
if (ToggleState == true)
{
return P.CompleteDate == null;
}
else
{
return P.CompleteDate != null;
}
};
}
但是,有两个奇怪的地方可能是相关的:
如果我尝试对网格进行排序,则 UI 不会更新。
私人无效 Click_DefaultSort() { MyInspectionView.SortDescriptions.Add(new SortDescription("StopReasonID", ListSortDirection.Ascending)); MyInspectionView.SortDescriptions.Add(new SortDescription("StartedDate", ListSortDirection.Ascending)); MyInspectionView.SortDescriptions.Add(new SortDescription("ReceiptDate", ListSortDirection.Ascending));
}
如果用户在新行中输入数据并将其添加到 observable 集合中,它将添加并显示在 UI 中,但不会自动添加下一个新的空白行。但是,如果我单击另一行或按 Enter 键,它将添加新的空白行:
我认为这两个项目可能是相关的,这就是为什么我将它们包括在同一个问题中。这是我在第二个问题中找到的最接近的例子: 更新 ObservableCollection 后没有使用 Datagrid Editing 的新行
编辑:另一个观察结果是绑定引发了这些警告,但我未能成功解决:
System.Windows.Data Warning: 56 : Created BindingExpression (hash=5405340) for Binding (hash=39717249)
System.Windows.Data Warning: 58 : Path: 'MyInspectionView'
System.Windows.Data Warning: 62 : BindingExpression (hash=5405340): Attach to System.Windows.Controls.DataGrid.ItemsSource (hash=42463340)
System.Windows.Data Warning: 67 : BindingExpression (hash=5405340): Resolving source
System.Windows.Data Warning: 70 : BindingExpression (hash=5405340): Found data context element: DataGrid (hash=42463340) (OK)
System.Windows.Data Warning: 78 : BindingExpression (hash=5405340): Activate with root item MainWindowViewModel (hash=63685038)
System.Windows.Data Warning: 108 : BindingExpression (hash=5405340): At level 0 - for MainWindowViewModel.MyInspectionView found accessor RuntimePropertyInfo(MyInspectionView)
System.Windows.Data Warning: 104 : BindingExpression (hash=5405340): Replace item at level 0 with MainWindowViewModel (hash=63685038), using accessor RuntimePropertyInfo(MyInspectionView)
System.Windows.Data Warning: 101 : BindingExpression (hash=5405340): GetValue at level 0 from MainWindowViewModel (hash=63685038) using RuntimePropertyInfo(MyInspectionView): ListCollectionView (hash=48179284)
System.Windows.Data Warning: 80 : BindingExpression (hash=5405340): TransferValue - got raw value ListCollectionView (hash=48179284)
System.Windows.Data Warning: 84 : BindingExpression (hash=5405340): TransferValue - implicit converter produced ListCollectionView (hash=48179284)
System.Windows.Data Warning: 89 : BindingExpression (hash=5405340): TransferValue - using final value ListCollectionView (hash=48179284)
解决方案
推荐阅读
- javascript - 如何解决对函数参数属性的分配
- html - 有没有办法在表单中提供颜色选项,并且这种颜色也被发送到数据库?
- javascript - i18next 在 React 应用程序上翻译多语言
- selenium - CucumberOptions 使用 mvn 执行功能文件和功能文件夹
- node.js - Node.js、Express.js、Angular.js:托管我自己的 API
- python - 根据列中的索引减少数组的长度
- c# - 在 iText 7 中创建无边框表格
- c# - 有没有比梭子鱼在 Unity 中运行 Onnx 模型的另一种方法
- php - 在 Easy Digital Downloads 结账时切换字段顺序
- powershell - 在 GrdiView 中选择用户的问题