WPF UserControl – SelectedItem di un controllo DataGrid di Usercontrol per collegarsi a un object ItemSource a DataGrid all’esterno di UserControl

Ciao, la mia conoscenza UserControl su My WPF è vecchia di un’ora. Quindi, per favore perdonami se ci sono un sacco di tutorial e / o risposte su SO riguardo a questa domanda (Ad essere onesti non penso che questo possa essere fatto e avrò bisogno di rifare codice … quindi perché pensavo di chiederlo)

Quindi, prima di creare un UserControl, disponevo di un datagrid che scalda i clienti in base al testo che l’utente ha digitato in una casella di testo. Una volta trovato, il SelectedItem di quel filtro DataGrid viene quindi utilizzato per collegarsi a un nuovo DataGrid che contiene una nuova raccolta.

Così….

Filtra DataGrid XAML

SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}" ItemsSource="{Binding Source={StaticResource cvsCustomers}}" 

Una volta che l’utente seleziona un cliente in quella griglia,

un nuovo DataGrid conterrà righe di proprietà basate su SelectedCustomer

 ItemsSource="{Binding SelectedCustomer.CustomerOrders}" 

Tutto bene e bene e funziona.

Tuttavia, ho intenzione di utilizzare questa funzionalità di risultati del filtro cliente molto nel mio progetto, quindi ho creato un UserControl in cui il filtro DataGrid funziona.

Ho messo questo UserControl in una vista, quindi il problema è che ho bisogno di qualsiasi cosa l’object selezionato sia in Usercontrol per essere limitato a un DataGrid nella vista. (Come sopra)

Quindi ho bisogno di qualcosa di simile in DataGrid nella vista.

 ItemsSource="{Binding ElementName=myUserControl, Path=SelectedCustomer.CustomerOrders}" 

Ok un po ‘a lungo, ma spero che tu capisca il problema, e ho dato abbastanza conoscenze sull’argomento in questione. Se ho fatto qualcosa di sbagliato, per favore dimmi e basta votare la domanda.

Saluti

È ansible aggiungere una nuova proprietà di dipendenza al proprio usercontrol personalizzato e vincolare l’origine degli elementi DataGrid a quella proprietà. Assicurati di gestire la selezione dell’evento modificato sulla griglia dei dati del tuo controllo utente e imposta la proprietà di dipendenza sull’elemento selezionato.

  public object MySelectedItem { get { return (object)GetValue(MySelectedItemProperty); } set { SetValue(MySelectedItemProperty, value); } } // Using a DependencyProperty as the backing store for MySelectedItem. This enables animation, styling, binding, etc... public static readonly DependencyProperty MySelectedItemProperty = DependencyProperty.Register("MySelectedItem", typeof(object), typeof(YOURUSERCONTROLTYPE), new UIPropertyMetadata(null)); 

gestire l’evento modificato di selezione

  public YourUserControl() { InitializeComponent(); dgv.SelectionChanged += dgv_SelectionChanged; } void dgv_SelectionChanged(object sender, SelectionChangedEventArgs e) { MySelectedItem = dgv.SelectedItem; } 

e poi bind a

 ItemsSource="{Binding ElementName=myUserControl, Path=MySelectedItem.CustomerOrders}"