|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
[WPF] UserControl: usare gli elementi definito in un altro UserControl
Ciao a tutit,
nella mia applicazione ho incluso un UserControl "B" in un UserControl "A".... so, I vorrei richiamare il datagrid "dgPlan" definito in UserControl "A" dall'UserControl "B". Come faccio a richiamarlo? Grazie. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Quote:
Posta anche il codice xaml e il listato c# dei due componenti, così riusciamo ad aiutarti meglio. |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Ok, domani lo posto.
Dovrei semplicemente richiamare il DataGrid dell'userControl A nell'UserControl B al fine di aggiornare i dati da visualizzare. Grazie. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Buongiorno,
ecco i miei due UserControl. UserControlA Codice:
<UserControl x:Class="MyProject.Views.UserControlA" x:Name="UserControlUserControlA" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mui="http://firstfloorsoftware.com/ModernUI" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:staticData="clr-namespace:MyProject.Views" mc:Ignorable="d" d:DesignHeight="381" d:DesignWidth="1200" Unloaded="UserControl_Unloaded"> <StackPanel Grid.Row="1"> <ScrollViewer> <staticData:UserControlB /> </ScrollViewer> </StackPanel> <DataGrid Name="dgSample" ItemsSource="{Binding}" AutoGenerateColumns="False" AlternatingRowBackground="{StaticResource RowAlternateColorBackground}" GridLinesVisibility="All" VerticalGridLinesBrush="{StaticResource GridLineColor}" HorizontalGridLinesBrush="{StaticResource GridLineColor}" IsReadOnly="False" CanUserAddRows="False"> [MY_COLUMNS] </DataGrid> </UserControl> UserControlB Codice:
<UserControl x:Class="MyProject.Views.UserControlB" x:Name="UserControlUserControlB" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mui="http://firstfloorsoftware.com/ModernUI" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:staticData="clr-namespace:MyProject.Views" mc:Ignorable="d" d:DesignHeight="381" d:DesignWidth="1200"> [MY_CONTENT] <!-- Search Button --> <Button Margin="15,0,0,0" Name="bntSearch" Content="{StaticResource menuSeachButton}" Click="bntSearch_Click"></Button> </Grid> </UserControl> Quando l'utente esegui il click su bntSearch button in UserControlB, dgPlan deve essere aggiornata con i nuovi dati... Grazie. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Risolto grazie ad un utente:
nel mio UserControlA: Codice:
public void RefreshDataGrid(IEnumerable itemsSource) { dgPlan.ItemsSource = itemsSource; } Codice:
void bntSearch_Click(object sender, RoutedEventArgs e) { MyProject.Views.UserControlA uc = FindParent<MyProject.Views.UserControlA>(this); if (uc != null) { uc.RefreshDataGrid(myCollection); } } private static T FindParent<T>(DependencyObject dependencyObject) where T : DependencyObject { var parent = VisualTreeHelper.GetParent(dependencyObject); if (parent == null) return null; var parentT = parent as T; return parentT ?? FindParent<T>(parent); } ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:11.