WinForm DataGridView में, प्रारंभ होने पर यह स्वचालित रूप से पहली पंक्ति का चयन करता है। जब मैंने उस सुविधा को बंद करने की कोशिश की तो मुझे पागल कर दिया। डब्ल्यूपीएफ डाटाग्रिड में जाने पर, ऐसा लगता है कि माइक्रोसॉफ्ट ने इस सुविधा को बंद करने का फैसला किया है, जो मुझे लगता है कि एक अच्छी बात है। हालांकि, अब मुझे इस सुविधा को सक्षम करने में कठिन समय है। कुछ डेटाग्रिड के लिए, मैं डेटा बाध्यकारी के माध्यम से ग्रिड पॉप्युलेट होने के बाद स्वचालित रूप से पहली पंक्ति का चयन करना चाहता हूं। इंटरनेट में कुछ सुझाव हैं, लेकिन मैं यह काम नहीं कर सका। मैं यहां बेहतर भाग्य की उम्मीद करता हूं।WPF DataGrid प्रोग्रामेटिक रूप से पंक्ति या सेल का चयन कैसे करें?
उत्तर
IsSynchronizedWithCurrentItem = "true"
सेट करें।
संपादित करें:
अपनी टिप्पणी करने के लिए, मुझे लगता है कि अपने डेटा ग्रिड के SelectionUnit "सेल" पर सेट है, यह क्या है? ठीक है, मुझे यकीन नहीं है कि यह सबसे अच्छा समाधान है, लेकिन एक चीज जो आप कर सकते हैं वह डेटाग्रिड के लिए लोडेड ईवेंट को संभालने और मैन्युअल रूप से चयनित सेल को कोड-बैक में सेट करना है।
<DataGrid x:Name="dg" AutoGenerateColumns="False" IsSynchronizedWithCurrentItem="True"
SelectedCellsChanged="dg_SelectedCellsChanged" SelectionUnit="Cell"
Loaded="dg_Loaded">
...
</DataGrid>
घटना हैंडलर:
private void dg_Loaded(object sender, RoutedEventArgs e)
{
if ((dg.Items.Count > 0) &&
(dg.Columns.Count > 0))
{
//Select the first column of the first item.
dg.CurrentCell = new DataGridCellInfo(dg.Items[0], dg.Columns[0]);
dg.SelectedCells.Add(dg.CurrentCell);
}
}
ध्यान दें कि यह केवल तभी DataGrid.SelectionUnit "सेल" पर सेट है काम करेंगे तो आप कुछ इस तरह होगा। अन्यथा, मुझे विश्वास है कि यह एक अपवाद फेंक देगा।
EDIT2:
XAML:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<StackPanel>
<Button Click="Button_Click">Reset</Button>
<DataGrid x:Name="dg" AutoGenerateColumns="False" IsSynchronizedWithCurrentItem="True"
SelectionUnit="Cell"
DataContextChanged="dg_DataContextChanged"
ItemsSource="{Binding Items}"
Loaded="dg_Loaded">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding}"/>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</Window>
कोड-पीछे:
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.LoadItems();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
this.LoadItems();
}
private void LoadItems()
{
this.DataContext = new { Items = new List<string> { "Item1", "Item2", "Item3" } };
this.SelectFirstItem();
}
private void dg_Loaded(object sender, RoutedEventArgs e)
{
SelectFirstItem();
}
void SelectFirstItem()
{
if ((dg.Items.Count > 0) &&
(dg.Columns.Count > 0))
{
//Select the first column of the first item.
dg.CurrentCell = new DataGridCellInfo(dg.Items[0], dg.Columns[0]);
dg.SelectedCells.Add(dg.CurrentCell);
}
}
private void dg_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
this.SelectFirstItem();
}
}
}
आप इस कोशिश कर सकते।
this.dataGrid.SelectionMode = DataGridSelectionMode.Single;
// Selects the 4th row.
this.dataGrid.SelectedIndex = 3;
यह पंक्ति चयन के लिए है। –
@ अवतार: मैंने अभी आपके सुझाव की कोशिश की है। ऐसा लगता है कि IsSynchronizedWithCurrentItem के समान प्रभाव है। तो, यह सिर्फ पंक्ति को हाइलाइट करता है, लेकिन मुझे SelectedCellsChanged ईवेंट नहीं मिलता है। दुर्भाग्य से, कोई "SelectedRowChanged" ईवेंट या ऐसा कुछ नहीं है। WinForm DataGridView की तुलना में, डब्ल्यूपीएफ डाटाग्रिड में बहुत कम घटनाएं हैं। – newman
@ मिलियू चयनित कैल्स चेंज किए गए कार्यक्रम को ट्रिगर किया जाना चाहिए पता नहीं क्या समस्या है। मेरे पास एक नमूना है। कृपया इसे जांचें। इससे आपको कुछ विचार मिल सकता है। http://www.filefactory.com/file/b3bhf1d/n/DataGridCheckBoxSelection.zip –
मैं मैं ItemContainerGenerator.StatusChanged
घटना के माध्यम से इस समस्या के लिए एक समाधान पाया रिपोर्ट करने के लिए खुश हूँ।
dataGrid.ItemContainerGenerator.StatusChanged += new EventHandler(ItemContainerGenerator_StatusChanged);
void ItemContainerGenerator_StatusChanged(object sender, EventArgs e)
{
if (dataGrid.ItemContainerGenerator.Status == GeneratorStatus.ContainersGenerated)
{
dataGrid.SelectedIndex = 0;
}
}
ऐसा लगता है कि इस घटना को स्थिति कंटेनर के साथ निकाल दिया गया है, डेटाग्रिड पूरी तरह से प्रारंभ किया गया है। मेरे लिए, यह WinForm में DataGridView के DataBindingComplete ईवेंट की तरह है। यदि ऐसा है, तो "DataContextChanged
" ईवेंट को वास्तव में "DataContextChanging
" ईवेंट कहा जाना चाहिए।
यह here पोस्ट से प्रेरित था, मैंने एक और सुराग की तलाश करते समय गलती से पाया।
असल में, मुझे अभी एहसास हुआ कि ItemContainerGenerator_StatusChanged ईवेंट को कई बार निकाल दिया जा सकता है। मैं DataContextChanged ईवेंट पर वापस आ गया और इसे Dispatcher.BeginInvoke के माध्यम से काम किया। – newman
आप इसे डेटाग्रिड.लोडेड ईवेंट में लगातार कर सकते हैं। बस पहली पंक्ति प्राप्त करें और पंक्ति को चयन ईवेंट को आग लगाना है।
void MyGridLoaded(...) {
DataGridRow r = yourGrid.ItemContainergenerator.ContainerFromIndex(0) as DataGridRow;
if(r != null) {
r.IsSelected = false;
r.IsSelected = true;
}
}
मुझे यकीन है कि यह एक बग है क्योंकि आप अपने वस्तु से चयन घटनाओं आग के लिए जब तक नियंत्रण भरी हुई है इसकी गारंटी नहीं किया जा सकता है नहीं कर रहा हूँ। क्या पता।
- 1. सभी बटन का चयन करें WPF DataGrid
- 2. WPF ListView प्रोग्रामेटिक रूप से आइटम का चयन करें
- 3. WPF DataGrid के लिए सेल स्तर कॉम्बोबॉक्स कैसे प्राप्त करें?
- 4. WPF datagrid वैकल्पिक पंक्ति रंग
- 5. WPF DataGrid
- 6. ListView पंक्ति प्रोग्रामेटिक (wpf)
- 7. रैडग्रिड सेल प्रोग्रामेटिक रूप से
- 8. WPF DataGrid
- 9. एक WPF DataGrid को रीफ्रेश कैसे करें?
- 10. मोनो टच में UITableView में प्रोग्रामेटिक रूप से एक पंक्ति का चयन कैसे करें?
- 11. WPF DataGrid
- 12. WPF में प्रोग्रामेटिक रूप से स्पष्ट चयन कॉम्बोबॉक्स
- 13. QTreeView प्रोग्रामेटिक रूप से
- 14. JQGrid प्रोग्रामिक रूप से ग्रिड पंक्ति का चयन करें
- 15. WPF DataGrid -
- 16. मैं WPF डेटाग्रिड में एक एकल सेल का चयन कैसे करूं?
- 17. रोकें WPF डेटा ग्रिड में एक से अधिक पंक्ति चयन
- 18. WPF datagrid चिपकाने
- 19. WPF DataGrid प्रदर्शन में सुधार
- 20. प्रोग्रामेटिक रूप से UITableView सेल को हाइलाइट करें
- 21. एंड्रॉइड - प्रोग्रामेटिक रूप से मेनू विकल्प का चयन करें
- 22. WPF UI तत्व टैब प्रोग्रामेटिक रूप से नेविगेट कैसे करें?
- 23. पंक्ति और कॉलम अनुक्रमणिका द्वारा WPF ग्रिड में प्रोग्रामेटिक रूप से नियंत्रण कैसे प्राप्त करें?
- 24. किसी सेलटेबल सेल (या पंक्ति)
- 25. प्रोग्राम योग्य रूप से uitableview पंक्ति का चयन करें
- 26. DataGrid SelectionUnit = सेल किसी चयनित पंक्ति के लिए सभी समर्थन अक्षम करता है?
- 27. WPF DataGrid सॉर्टडिस्क्रिप्शन
- 28. WPF DataGrid: लोड, वर्तमान आइटम पर चयन पर (पर प्रकाश डाला)
- 29. एक ग्रिड व्यू में प्रोग्रामेटिक रूप से पंक्ति कैसे डालें?
- 30. WPF DataGrid PropertyChanged
टिप के लिए बहुत बहुत धन्यवाद। मैंने बस कोशिश की। इसे सत्य पर सेट करने से डेटाग्रिड की पहली पंक्ति "हाइलाइट" हो जाएगी, लेकिन चयनित नहीं है। मुझे निकाल दिया गया चयनित CellsChanged घटना की जरूरत है। तो, मैं इस घटना को भी कैसे निकाल सकता हूं? – newman
संपादित देखें। आशा करता हूँ की ये काम करेगा। – ASanch
@karmicpuppet: यह कोड dg_Loaded घटना में काम करता है। हालांकि, यह DataContextChanged ईवेंट में काम करता है।अनिवार्य रूप से, एक ही ग्रिड का पुन: उपयोग किया जाता है। प्रत्येक बार जब डेटा डेटा संदर्भ सेट होता है, तो मैं पहली पंक्ति को स्वचालित रूप से चुनना चाहता हूं जो चयनितCellsChanged ईवेंट को ट्रिगर करना चाहिए क्योंकि मैं उस पर भरोसा कर रहा हूं। – newman