好吧,我有一个样式文件,为我的MainWindow定义了一个自定义停靠面板。
Title="Fancy App" Width="900" Height="730" Background="#37537F" WindowStyle="None" AllowsTransparency="True" >
<Window.Style>
<StaticResource ResourceKey="CustomWindowStyle"/>
</Window.Style>
CustomWindowStyle.xaml为控制器定义了一些视图框,例如最小化,最大化等。像这样:
<Viewbox DockPanel.Dock="Right" Visibility="Visible">
<Border Width="74" Background="Transparent" MouseLeftButtonDown="MaximizeRestoreClick" WindowChrome.IsHitTestVisibleInChrome="True">
<Canvas Width="48" Height="48" >
<Path Margin="10" Data="M4,4H20V20H4V4M6,8V18H18V8H6Z" Fill="White"/>
</Canvas>
</Border>
到目前为止一切顺利。 我现在想要实现的是从MainWindow.xaml访问CustomWindowStyle中Viewbox的Visibility属性并更改它。 我不知道该怎么做。
答案 0 :(得分:1)
您可以为模板中的Viewbox
提供x:Name
:
<Viewbox x:Name="viewBox">
...
...并覆盖窗口类的OnApplyTemplate()
方法:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
Viewbox vb = this.Template.FindName("viewBox", this) as Viewbox;
if (vb != null)
vb.Visibility = Visibility.Collapsed;
}
}
您无法从窗口的XAML标记访问Viewbox
/ Style
中定义的ControlTemplate
。