首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用MenuItem的DataTemplate会导致左侧出现额外的空间吗?

使用MenuItem的DataTemplate会导致左侧出现额外的空间吗?
EN

Stack Overflow用户
提问于 2009-08-21 16:12:54
回答 1查看 15.3K关注 0票数 20

每当我将DataTemplate附加到MenuItem时,每个生成的菜单项都会在左侧获得额外的空间。这个额外的空间看起来和我使用的为检查保留的空间一样宽。在没有DataTemplate的情况下手动构建菜单不会增加额外的空间。一个额外的问题是,如果我点击这个额外的空间,菜单项就会消失,但不会产生任何点击事件。我不知道它为什么要增加这个额外的空间。有什么想法吗?

我的xaml代码再简单不过了:

带有所述额外空格的菜单:

代码语言:javascript
复制
<Menu>
    <MenuItem Header="Enemies" ItemsSource="{Binding AvailableEnemyClasses}">
        <MenuItem.ItemTemplate>
            <DataTemplate>
                <MenuItem Header="{Binding}">
                </MenuItem>
            </DataTemplate>
        </MenuItem.ItemTemplate>
    </MenuItem>
</Menu>

不带额外空格的菜单:

代码语言:javascript
复制
<Menu>
    <MenuItem Header="Utilities" >
        <MenuItem Header="Enemy01"/>
        <MenuItem Header="Enemy02"/>
        <MenuItem Header="Enemy03"/>
    </MenuItem>
</Menu>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-21 16:15:34

这是因为DataTemplate生成的可视化树将被包装在一个容器中--在本例中是一个MenuItem。因此,您实际上在MenuItem中有一个MenuItem,它解释了额外的空间和缺乏交互性。没有必要在ItemTemplate中包含MenuItem

您的示例可能会编写为:

代码语言:javascript
复制
<Menu>
    <MenuItem Header="Enemies" ItemsSource="{Binding AvailableEnemyClasses}">
        <MenuItem.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding}"/>
            </DataTemplate>
        </MenuItem.ItemTemplate>
    </MenuItem>
</Menu>

或者,也许更简洁:

代码语言:javascript
复制
<Menu>
    <MenuItem Header="Enemies" ItemsSource="{Binding AvailableEnemyClasses}">
        <MenuItem.ItemContainerStyle>
            <Style TargetType="MenuItem">
                <Setter Property="Header" Value="{Binding}"/>
                <Setter Property="IsChecked">
                    <Setter.Value>
                        <MultiBinding Converter="{StaticResource YourConverter}">
                            <Binding .../>
                            <Binding .../>
                        </MultiBinding>
                    </Setter.Value>
                </Setter>
            </Style>
        </MenuItem.ItemContainerStyle>
    </MenuItem>
</Menu>
票数 47
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1312895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档