|
|||||||
|
|
|
![]() |
|
|
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: 21:09.




















