WPF应用程序中的常见布局

本文关键字:常见 布局 应用程序 WPF | 更新日期: 2023-09-27 18:28:00

我是WPF的新手,正在创建一个应用程序,我想在其中制作一个可以应用于所有窗口的通用布局。我希望在所有窗口上都能使用几个按钮和窗口属性。

如果可能的话,请帮忙。我找不到任何解释这类功能的链接或来源。

非常感谢

*****编辑***

我使用的代码显示了窗口上的一个按钮。我不想把它写在所有的窗户上。我想把它放在基类/父类中,这样它就会出现在我添加到项目中并从基类/父级继承的所有窗口上。

但是怎么做呢?我几乎不知道。感谢您的帮助。

<Controls:MetroWindow.RightWindowCommands>
    <Controls:WindowCommands>
        <Button Content="settings" Name="Settings" Click="Settings_Click" />
        <Button>
            <StackPanel Orientation="Horizontal">
                <Rectangle Width="20" Height="20" Fill="{Binding RelativeSource={RelativeSource AncestorType=Button}, Path=Foreground}">
                    <Rectangle.OpacityMask>
                        <VisualBrush Stretch="Fill" Visual="{StaticResource appbar_cupcake}" />
                    </Rectangle.OpacityMask>
                </Rectangle>
                <TextBlock Margin="4 0 0 0" VerticalAlignment="Center" Text="test" />
            </StackPanel>
        </Button>
    </Controls:WindowCommands>
</Controls:MetroWindow.RightWindowCommands>

WPF应用程序中的常见布局

是的,你可以做到。有一个术语叫做UserControl,你必须编写自己的UserControl。

有关如何编写可重复使用的UserControl的基本信息。检查给定的链路

这不是你想要的控制。。但是您可以了解如何编写UserControl..:)

要为整个应用程序创建一个通用主题,您应该关注样式和共享资源的方向,请参阅此处http://msdn.microsoft.com/en-us/library/ms745683(v=vs.110).aspx

或者你可以使用现成的主题,比如这里http://wpfthemes.codeplex.com/

编辑

您可以通过将应在所有窗口中使用的通用控件移动到一个单独的UserControl来实现这一点。那么你会有这样的smth:

用户控制

  <StackPanel>
        <Button Content="settings" Name="Settings"  />
        <Button>
            <StackPanel Orientation="Horizontal">
                <Rectangle Width="20" Height="20" Fill="{Binding RelativeSource={RelativeSource AncestorType=Button}, Path=Foreground}">
                    <Rectangle.OpacityMask>
                        <VisualBrush Stretch="Fill" />
                    </Rectangle.OpacityMask>
                </Rectangle>
                <TextBlock Margin="4 0 0 0" VerticalAlignment="Center" Text="test" />
            </StackPanel>
        </Button>
    </StackPanel>

然后,在所有需要这些控件的窗口中,您应该添加此控件,如下所示:

<local:UserControl1 x:Name="myCtrl"></local:UserControl1>

其中local是定义UserControl1的命名空间。