从上下文菜单控件模板 C# 访问子项
Access children from contextmenu control template c#
我正在尝试从控件的上下文菜单访问控件 template.My xaml 是:
<Button x:Name="button1" ContextMenuService.Placement="top" Content="Button" HorizontalAlignment="Left" Margin="2,543,0,0" VerticalAlignment="Top" Width="75" Grid.ColumnSpan="2">
<Button.ContextMenu>
<ContextMenu x:Name="btconmn" >
<ContextMenu.Template>
<ControlTemplate>
<Grid x:Name="newgrid" Width="183" Height="190">
<Rectangle Fill="#FF263349" x:Name="newfolder" HorizontalAlignment="Left" VerticalAlignment="Top" Width="179" Height="32" Margin="2,1,0,0"/>
</Grid>
</ControlTemplate>
</ContextMenu.Template>
</ContextMenu>
</Button.ContextMenu>
</Button>
我在这里尝试访问 newfolder
矩形。到目前为止我试过了:
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
var template = btconmn.Template;
var myControl = (Rectangle)template.FindName("newfolder", btconmn);
}
哪个returns空引用exception.Any帮助?
WPF 控件通常在需要时才会加载,因此在您的情况下,您可以访问矩形的最早点是 在 按钮的上下文菜单加载后(这发生在它第一次打开之前):
将此添加到您的 XAML:
<ContextMenu x:Name="btconmn" Loaded="Btconmn_OnLoaded">
这在你后面的代码中:
private void Btconmn_OnLoaded(object sender, RoutedEventArgs e)
{
var template = btconmn.Template;
var myControl = (Rectangle)template.FindName("newfolder", btconmn);
}
我正在尝试从控件的上下文菜单访问控件 template.My xaml 是:
<Button x:Name="button1" ContextMenuService.Placement="top" Content="Button" HorizontalAlignment="Left" Margin="2,543,0,0" VerticalAlignment="Top" Width="75" Grid.ColumnSpan="2">
<Button.ContextMenu>
<ContextMenu x:Name="btconmn" >
<ContextMenu.Template>
<ControlTemplate>
<Grid x:Name="newgrid" Width="183" Height="190">
<Rectangle Fill="#FF263349" x:Name="newfolder" HorizontalAlignment="Left" VerticalAlignment="Top" Width="179" Height="32" Margin="2,1,0,0"/>
</Grid>
</ControlTemplate>
</ContextMenu.Template>
</ContextMenu>
</Button.ContextMenu>
</Button>
我在这里尝试访问 newfolder
矩形。到目前为止我试过了:
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
var template = btconmn.Template;
var myControl = (Rectangle)template.FindName("newfolder", btconmn);
}
哪个returns空引用exception.Any帮助?
WPF 控件通常在需要时才会加载,因此在您的情况下,您可以访问矩形的最早点是 在 按钮的上下文菜单加载后(这发生在它第一次打开之前):
将此添加到您的 XAML:
<ContextMenu x:Name="btconmn" Loaded="Btconmn_OnLoaded">
这在你后面的代码中:
private void Btconmn_OnLoaded(object sender, RoutedEventArgs e)
{
var template = btconmn.Template;
var myControl = (Rectangle)template.FindName("newfolder", btconmn);
}