我重新模仿Silverlight ChildWindow类以允许各种自定义。到现在为止还挺好。我在标题栏中添加了StackPanel
,以便我可以添加一些菜单按钮,但我不知道如何使StackPanel
正面朝前。可能有几种方法可以做我正在尝试做的事情,但我真正想要的是能够从代码访问这个堆栈面板,以便我可以添加一些东西。
ChildWindow标题栏被称为Chrome。这就是我所拥有的。
<Border x:Name="Chrome" Width="Auto" BorderBrush="#FFFFFFFF" BorderThickness="0,0,0,1">
<Border.Background>
<LinearGradientBrush EndPoint="0.5,0.528" StartPoint="0.5,0">
<GradientStop Color="#FFE5E8EB" Offset="1" />
<GradientStop Color="#FFFEFEFE" Offset="0" />
</LinearGradientBrush>
</Border.Background>
<Grid Height="Auto" Width="Auto">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="30" />
</Grid.ColumnDefinitions>
<StackPanel Name="TitleBar" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="6,0,6,0" >
<ContentControl Content="{TemplateBinding Title}" IsTabStop="False" FontWeight="Bold" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="6,0,6,0" />
<StackPanel Height="Auto" HorizontalAlignment="Left" x:Name="stackPanel_menu_buttons" VerticalAlignment="Top" Width="Auto" Orientation="Horizontal" />
</StackPanel>
<Button x:Name="CloseButton" Grid.Column="1" IsTabStop="False" HorizontalAlignment="Center" VerticalAlignment="Center" Width="15" Height="14" Style="{StaticResource ButtonStyle}" />
</Grid>
</Border>
我是否有一些让stackPanel_menu_buttons
成为公共对象的方式?
答案 0 :(得分:1)
我同意HighCore。如果你还想这样做。只需设置x:Name并以这种方式访问:
yourControl = GetTemplateChild("YourControlsXName") as FrameworkElement;