【发布时间】:2015-12-27 01:57:51
【问题描述】:
如果我的方法有问题,请告诉我。 我有一个包含数据网格的 WPF 窗口。这是为了让用户输入一个对象 ID 列表供程序处理。
我将 DataGrid 的 ItemsSource 绑定到 ObservableCollection,其中 MyObject 是具有单个字符串属性的类 - ObjectId。
我有一个关于何时更改收藏的事件:
void TasksList_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
ProgressBarMax = TasksList.Count;
TaskCountLabel = string.Format("{0} tasks to modify", TasksList.Count);
}
我还想验证输入数据 - 用户可能提供了不正确的 ID,在这种情况下我不想将其添加到集合中。 但是,当我访问 e.NewItems[0] 对象时,它的 ObjectId 属性仍然为 null,因此无法验证。
我的方法有什么问题?
根据 cmets 添加数据网格 XAML:
<DataGrid Margin="5,0,5,10"
ColumnWidth="*"
ItemsSource="{Binding ElementName=ThisUc,
Path=TasksList,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"
Style="{x:Null}"
CanUserAddRows="True" CanUserPasteToNewRows="True"
x:Name="TasksDataGrid"
CanUserDeleteRows="True"
VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
SelectionUnit="Cell" />
【问题讨论】:
-
也许您需要在之前将它添加到集合中而不是之后执行此验证。您目前如何将项目添加到此集合中?
ICommand? -
@MikeEason - 不...集合绑定到数据网格,因此当用户开始在数据网格单元格中输入时它会更新...
-
发布您的数据网格 xaml
标签: c# wpf data-binding datagrid observablecollection