如何通过WPF中的所有应用程序维护menuBar和StatusBar

时间:2017-08-04 11:16:48

标签: c# wpf menu statusbar

一小时后我找不到任何答案。

无论如何,我可以像我的应用程序中的所有窗口一样保留“模板”,这样他们总是拥有相同的StatusBarMenu?因此,每次创建Window时我都不必手动添加它,因为如果我添加例如MenuItem,我需要将它添加到所有窗口。此外,为了保持相同的网格布局,即使这不是那么重要。

就像在PHP中使用默认模板并只更改它的主体一样。

这是我的实际代码:

<Window x:Class="studies.myWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:studies"
        mc:Ignorable="d"
        Title="My window Title" Height="720" Width="1280" WindowStartupLocation="CenterScreen" Background="{DynamicResource BackgroundKey}" WindowState="Maximized">
    <Grid>
        <Grid.ColumnDefinitions>
            [...]
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            [...]
        </Grid.RowDefinitions>


        <Menu HorizontalAlignment="Stretch" Margin="0 0 0 20 " Grid.RowSpan="1" Grid.Column="0" Grid.ColumnSpan="12"  VerticalAlignment="Stretch">
            <MenuItem Header="_File">
                <MenuItem Header="New _Company"/>
                <MenuItem Header="New _Proyect"/>
                <Separator />
                <MenuItem Header="_Exit" />
            </MenuItem>
        </Menu>

        <StatusBar HorizontalAlignment="Stretch" Grid.ColumnSpan="12" Grid.Row="12"  VerticalAlignment="Stretch" Background="#FF212121" BorderBrush="#FF696969" >
            <StatusBar.ItemsPanel>
                <ItemsPanelTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="3*" />
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="3*" />
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="3*" />
                        </Grid.ColumnDefinitions>
                    </Grid>
                </ItemsPanelTemplate>
            </StatusBar.ItemsPanel>

            <StatusBarItem>
                <TextBlock Name="lblCursorPosition" Text="Conectado como: daniaguado" Foreground="{DynamicResource LightForegroundBrush}" FontSize="10" IsEnabled="False" />
            </StatusBarItem>
            <Separator Grid.Column="1" />
            <StatusBarItem Grid.Column="2">
                <TextBlock  Foreground="{DynamicResource LightForegroundBrush}"/>
            </StatusBarItem>
            <Separator Grid.Column="3" />
            <StatusBarItem Grid.Column="4">

            </StatusBarItem>

        </StatusBar>

        <!-- Content goes here -->

    </Grid>
</Window>

1 个答案:

答案 0 :(得分:0)

您可以创建一个继承自Window的类,并将常用内容添加到其中。

然后,应用程序中的窗口将使用MyWindow而不是Window。这也允许自定义C#。

缺点是您可能不得不在代码中添加常用控件,而不是使用设计器,但它确实为您提供了所需的内容。

抱歉,我现在无法发布示例代码,因为我在平板电脑上,但是如果你无法解决这个问题,请告诉我,我会在下次访问时尝试显示一些代码PC