如何在模板/样式中进行控制以便可以访问?

时间:2014-01-12 13:53:18

标签: c# wpf silverlight

我重新模仿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成为公共对象的方式?

1 个答案:

答案 0 :(得分:1)

我同意HighCore。如果你还想这样做。只需设置x:Name并以这种方式访问​​:

yourControl = GetTemplateChild("YourControlsXName") as FrameworkElement;