Ответ 1
Я столкнулся с этим вопросом, ища тот же ответ. Я никогда ничего не нашел в Интернете, но сам открыл это решение. Возможно, это поможет кому-то в будущем.
Как указано ранее, DropDownButton
использует ContextMenu
для отображения своего ItemsSource
. В основном то, что я искал, было "Показ меню", который выходил из кнопки. Например, скажем, у вас есть DropDownButton
, который говорит "Добавить". Возможно, вам нужны два варианта: "Добавить новый" и "Добавить существующий". Так вот что я сделал...
Сначала я сделал некоторый объект для хранения заголовка/содержимого и команды.
public class TitledCommand
{
public String Title { get; set; }
public ICommand Command { get; set; }
}
Теоретически у вас есть список из них для привязки к ItemsSource
DropDownButton
.
public List<TitledCommand> TitledCommmands { get; private set; }
Теперь мы просто создаем контейнер item для DropDownButton
, чтобы он собирал заголовок и команду из наших объектов в ItemsSource
.
Включить MahApps:
xmlns:metroControls="http://metro.mahapps.com/winfx/xaml/controls"
И вот стиль...
<metroControls:DropDownButton Content="Add" ItemsSource="{Binding Path=TitledCommmands}">
<metroControls:DropDownButton.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Header" Value="{Binding Path=Title}"/>
<Setter Property="Command" Value="{Binding Path=Command}"/>
</Style>
</metroControls:DropDownButton.ItemContainerStyle>
</metroControls:DropDownButton>