WPF,获取窗体中的元素,哪里出错了?
<Window.Resources>
<Style TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border1">
<ContentPresenter />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Border Name="border2">
<Grid Name="grid1" HorizontalAlignment="Left" Width="596">
<Border Name="border3" />
<Button x:Name="button1" Content="Button" Click="Button_Click" Margin="217,303,258,155"/>
</Grid>
</Border>
private void Button_Click(object sender, RoutedEventArgs e)
{
var count = VisualTreeHelper.GetChildrenCount(this);
if (count > 0)
{
for (var i = 0; i < count; i++)
{
var child = VisualTreeHelper.GetChild(this, i);
var t = child as Border;
if (t != null)
MessageBox.Show(t.Name);
}
}
}
该怎么写呢?
2:如果只想搜逻辑树中的所有Border,不包括模板中的Boerder,该怎么写呢?
[解决办法]
需要递归处理,VisualTreeHelper.GetChild不能自动处理所有子集,只能处理第一级子集节点。