gpt4 book ai didi

c# - WPF - FrameworkElement - 枚举所有后代?

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:27 25 4
gpt4 key购买 nike

我有一个 FrameworkElement(实际上是一个 ToggleButton),其内容中有一个 Popup

我是这样访问的:

ToggleButton button = (ToggleButton)sender;
Popup popup = (Popup)button.FindName("popSelectIteration");

通常这很好用。但有时弹出窗口为空。

我正在尝试找到一种调试方法。有没有办法枚举 FindName 可以找到的所有“东西”?


作为背景,这是我的弹出窗口在 ToggleButton 中的定义方式:

<ToggleButton Grid.Column="1" HorizontalAlignment="Right" Margin="0,2,0,2" Checked="btnFindIterationChecked">
<Grid>
<Popup PlacementTarget="{Binding ElementName=chkIteration}" Name="popSelectIteration" Closed="popSelectIteration_Closed"
AllowsTransparency="True" StaysOpen="False" PopupAnimation="Fade">
<Border BorderBrush="#FF000000" Background="LightBlue" BorderThickness="1,1,1,1" CornerRadius="8,8,8,8" Padding="5">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="300"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Foreground="Black" >Select Destination:</TextBlock>
<ScrollViewer Grid.Row="1" >
<TreeView ItemsSource="{Binding IterationTree}" SelectedItemChanged="TreeView_SelectedItemChanged">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding PathEnd}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</ScrollViewer>
<Button Grid.Row="2" Background="LightBlue" Content="Clear Selection" Click="btnClear_Click"/>
</Grid>
</Border>
</Popup>
</Grid>
</ToggleButton>

最佳答案

尝试 Snoop .对于与可视化树有关的所有内容,它都是一个很棒的 WPF 调试实用程序。

编辑:您的具体问题似乎是时间问题。我猜这棵树还没有完全构建好,你尝试访问一个子元素,尽管它还没有创建。等到最顶层的元素收到“已加载”事件。

关于c# - WPF - FrameworkElement - 枚举所有后代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2285196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com