Используя DataTemplate для MenuItem заставляет дополнительное пространство на левой стороне появляться?

Изучите двунаправленные карты повышения: http://www.boost.org/doc/libs/1_38_0/libs/bimap/doc/html/index.html

Это позволяет обоим значениям действовать как ключ.

Иначе, повторение является способом пойти.

18
задан djcouchycouch 21 August 2009 в 16:12
поделиться

1 ответ

Это потому, что визуальное дерево, созданное вашим DataTemplate , будет заключено в контейнер - в данном случае в MenuItem . Следовательно, у вас фактически есть MenuItem внутри MenuItem , что объясняет лишнее пространство и отсутствие интерактивности. Нет необходимости включать MenuItem в ваш ItemTemplate .

Вместо этого ваш пример может быть записан как:

<Menu>
    <MenuItem Header="Enemies" ItemsSource="{Binding AvailableEnemyClasses}">
        <MenuItem.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding}"/>
            </DataTemplate>
        </MenuItem.ItemTemplate>
    </MenuItem>
</Menu>

Или, возможно, более кратко:

<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>
45
ответ дан 30 November 2019 в 06:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: