我对这个WPF事情很恐怖,所以请耐心等待。我使用WPF的Xceed DataGrid,我需要知道什么时候有人选择一行,但我不知道如何做到这一点。我确定我需要添加一些XAML来实现这一点,但我无法弄清楚我应该做什么。我如何检测Xceed DataGrid中WPF的行选择
1
A
回答
1
我实际上正在努力与自己同样的事情,除了我有一个先决条件,通过ICommand的选择通知;但是,如果您没有此需求,则可以连接SelectionChanged事件处理程序。这是很基本的东西,但我会包括以防万一代码:
XAML:
<Grid>
<DataGrid:DataGridControl x:Name="gridControl" SelectionChanged="gridControl_SelectionChanged">
<!-- Content -->
</DataGrid:DataGridControl>
</Grid>
代码隐藏:
private void gridControl_SelectionChanged(object sender, Xceed.Wpf.DataGrid.DataGridSelectionChangedEventArgs e)
{
var selectedIndex = gridControl.SelectedIndex; // int index
var selectedItem = gridControl.SelectedItem; // instance of bound object
var selectedItems = gridControl.SelectedItems; // IList of bound objects
}
所有这一切说,我很感兴趣听听是否有任何优雅的解决方案,用ICommand从Xceed DataGrid中获取所选行(在我的情况下,我使用的是匿名类型,这可能会产生变化)...
0
所以,我来了你p与
System.ComponentModel.DependencyPropertyDescriptor gridItemsSourceDescriptor = System.ComponentModel.DependencyPropertyDescriptor.FromProperty(DataGridControl.SelectedItemProperty, typeof(DataGridControl));
gridItemsSourceDescriptor.AddValueChanged(dgBaxRuns, HandleSelectionChanged);
+0
应该小心使用这些描述符,因为它们会导致内存泄漏。 http://support.microsoft.com/kb/938416 –
3
我使用MVVM方法,因此有利于数据绑定。我将SelectedItem属性绑定到网格的ViewModel对象上的SelectedItem属性。
<xcdg:DataGridControl x:Name="grid" SelectedItem="{Binding SelectedItem}">
</xcdg:DataGridControl>
然后你的属性setter可以做SelectedItemChanged()方法改变时所需要的。
private IMyItem _selectedItem;
public IMyItem SelectedItem
{
get { return _selectedItem; }
set {
_selectedItem = value;
OnPropertyChanged("SelectedItem");
SelectedItemChanged();
}
}
1
您不必为简单的事情编写复杂的代码......虽然它会变得单调乏味,但下面是一些代码。我希望这会有所帮助:
<Style TargetType="xcdg:DataRow">
<EventSetter Handler="dr_PreviewMouseDown" Event="PreviewMouseDown" />
</Style>
void dr_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
DataRow dr = sender as DataRow;
Debug.WriteLine(sender);
}
0
我为我制造了一个最简单的方法。
<xctk:MaterialButton Margin="5,0,5,0" Grid.Column="3" Content="Szűrt sorok kijelölése" Command="{Binding SelectFilteredRowsCommand}" CommandParameter="{Binding ElementName=MyDataGrid}" />
所以,我发送我的datagrid与我的commandparameter到viewmodel。
public RelayCommand<object> SelectFilteredRowsCommand { get; set; }
SelectFilteredRowsCommand = new RelayCommand<object>((o) =>
{
var datagrid = o as DataGridControl;
if (datagrid != null)
{
var datagriditems = datagrid.Items.Cast<SelectableProduct>();
foreach (SelectableProduct selectableProduct in datagriditems)
{
selectableProduct.IsSelect = true;
}
}
});
并转换回datagrid itemsoruce类型。
相关问题
- 1. Xceed DataGrid for WPF的LicenseException
- 2. 当筛选器在Xceed DataGrid控件中更改为WPF时检测到
- 3. 如何隐藏wpf datagrid行选择器
- 4. GWT CellTable/DataGrid - 如何检测列选择?
- 5. Xceed Datagrid在子选择时丢失SelectedItem
- 6. WPF datagrid多行选择
- 7. WPF Datagrid风格选择行
- 8. WPF DataGrid行选择问题
- 9. 选择datagrid中的行索引(wpf)
- 10. Datagrid行选择事件,WPF
- 11. wpf datagrid行选择控制
- 12. WPF Datagrid无法选择行
- 13. WPF DataGrid TabControl中的行选择
- 14. 在WPF中的Xceed Datagrid中创建一个复选框
- 15. 用Xceed的WPF DataGrid中的图像替换复选框
- 16. 多行选择在DataGrid的WPF编程
- 17. 停止用户选择/取消选择WPF DataGrid中的行
- 18. 去除Xceed DataGrid中
- 19. 如何防止WPF Toolkit DataGrid中的行选择?
- 20. 选择并取消选择wpf datagrid中的行mvvm friendly
- 21. WPF Toolkit Datagrid - 你如何关闭选择?
- 22. 在运行时选择wpf datagrid单元
- 23. Wpf Datagrid文本框行选择
- 24. WPF DataGrid:如何确定ComboBox选择更改的行的索引?
- 25. 如何在Xceed WPF datagrid单元上设置ContentTemplate?
- 26. iPhone:UITableView的如何检测该行选择
- 27. 如何更改Xceed Datagrid的CellErrorStyle?
- 28. 如何检测DataGrid中的单选按钮何时被选中?
- 29. 导致自定义行模板中的行选择-MS WPF DataGrid
- 30. Xceed DataGrid QueryableSource和DbContext
我的Xceed网格没有这个事件,所以它不是真的可能。你有专业版吗? –
啊,是的,我确实......没有意识到他们会限制事件处理程序。对我来说似乎很陌生。 – egoodberry