我對這個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