J'ai un contrôle utilisateur avec un DependencyProperty
qui prend un UIElement
. Jusqu'à présent, tout va bien, le problème est que je ne peux pas trouver les enfants de l'élément.Envoyer UIElements via DependencyProperty dans wpf
Je pense que le problème est mon manque de connaissances, quelqu'un pourrait-il me dire quel est le problème et une solution possible?
J'ai fait un petit programme de test comme celui-ci
Usercontrol codebehind:
public UIElement TestSendUiElement
{
get { return (StackPanel)GetValue(TestSendUiElementProperty); }
set { SetValue(TestSendUiElementProperty, value); }
}
public static readonly DependencyProperty TestSendUiElementProperty =
DependencyProperty.Register("TestSendUiElement", typeof(StackPanel), typeof(Test), new FrameworkPropertyMetadata(TestSendUiElementPropertyChanged));
private static void TestSendUiElementPropertyChanged(DependencyObject source, DependencyPropertyChangedEventArgs e)
{
Console.WriteLine(VisualTreeHelper.GetChildrenCount((UIElement)e.NewValue));
}
XAML en utilisant la usercontrol:
<my:Test >
<my:Test.TestSendUiElement>
<StackPanel Orientation="Horizontal" Margin="0,2">
<TextBox Height="23" Width="50" Margin="0,0,5,0" />
<TextBox Height="23" Width="125" />
</StackPanel>
</my:Test.TestSendUiElement>
</my:Test>
sortie est 0 enfants. Ne devrait-il pas être 2?
coutures LogicalTreeHelper être la meilleure façon dans mon cas. Mais quand je me fatigue, je n'ai que cette sortie: System.Windows.LogicalTreeHelper + EnumeratorWrapper. Donc, je ne reçois pas d'enfants que je peux traverser. Devrais-je avoir des enfants? – Cinaird