来自另一个xaml的绑定元素属性

时间:2017-07-05 14:17:43

标签: c# wpf xaml

好吧,我有一个样式文件,为我的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属性并更改它。 我不知道该怎么做。

1 个答案:

答案 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