VS2010 WPF - 我可以通过UI创建一个带菜单项的菜单(不编辑XAML吗?)

时间:2010-08-27 22:15:21

标签: wpf visual-studio-2010 xaml menu

尝试将我的第一个Menu控件拖到VS2010中的WPF应用程序中。

有没有办法(通过VS2010用户界面)设置菜单项等?或者是否必须跳入XAML才能执行此操作?

在将窗体拖动到窗口后,似乎菜单控件似乎存在于窗口的顶部。但是我希望它被渲染为一个典型的Windows菜单,它位于与窗口本身相关的顶部(而不是窗口内容),如果这是有道理的。工具箱中的VS2010“菜单”项是否为您提供“传统”的Windows应用程序菜单?

1 个答案:

答案 0 :(得分:4)

我真的鼓励你在开始玩控件之前阅读Panels(和附加属性)以了解它们的布局(特别是Panels和ContentControls之间的区别是关键)。在WPF面板中决定控件的布局方式(至少是控件得到的基础知识)。这听起来很像你试图以WinForms的方式进行WPF - 你最终会非常沮丧,并且在小时转过来之前需要大量的镇静剂......:)

在VS Studio中,模板使用网格作为布局的基础 - 默认情况下,中心和拉伸内容(以及叠加控件),因此只需在其中拖动菜单就会提供无法识别的设计。

至于跳进XAML - 我从不使用ToolBox和Visual Designer。这当然是一种品味问题,但如果你习惯使用VS(与Blend相比),我会发现在编辑原始XAML时更容易理解发生了什么。

一些初始资源:linklink。对于一个简单的入门学习环境 - 我非常喜欢Kaxaml(这是一个使用XAML / WPF的编辑器,尽管在.Net 3.5 sp1中)。

编辑:一个小样本 - 只需复制Window-tags之间的所有内容,然后将其粘贴到Visual Studio为您提供的模板中:

<Window ....>
    <DockPanel>
        <Menu DockPanel.Dock="Top">
            <MenuItem Header="_File">
                <MenuItem Header="_Open"/>
                <MenuItem Header="_Save"/>
                <MenuItem Header="_Exit"/>
            </MenuItem>
            <MenuItem Header="_Edit">
                <MenuItem Header="C_ut"/>
                <MenuItem Header="_Copy"/>
                <MenuItem Header="Paste"/>
            </MenuItem>
            <MenuItem Header="Help">
                <MenuItem Header="About"/>
            </MenuItem>
        </Menu>
        <GroupBox Header="Some interesting controls go here">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>
                <Label Content="_First property"/>
                <TextBox Grid.Column="1"/>
                <Label Grid.Row="1" Content="_Second property"/>
                <TextBox Grid.Column="1" Grid.Row="1"/>
            </Grid>
        </GroupBox>
    </DockPanel>
</Window>