我想创建一个“多动作按钮”,因为想要一个更好的名字。即一个看起来类似于ComboBox的按钮(即一端带有切换箭头的内容),其中根内容是可直接点击的按钮,或者可以单击切换按钮以显示更多按钮,每个按钮绑定到不同的文本和绑定一个不同的命令。
应该有一个默认按钮,它总是在ComboBox的根目录中可见 - 即如果用户打开组合框,当它关闭时,默认项目应该仍然可见,即使他们已经点击(选中)了另一个项目
我用ComboBox控件尝试了这个,虽然它在那里大约75%,我实际上开始怀疑我是否朝着正确的方向前进。
xaml和代码如下。我目前遇到的问题是:
组合框是否是正确的解决方案?如果是这样,我将如何达到以上几点。如果没有,什么是更好的解决方案?
我已经按如下方式定义了一个类:
public class ActionItem
{
public string Text { get; set; }
public string Shortcut { get; set; }
public ICommand ActionCommand { get; set; }
}
并希望能够将ActionItems的ObservableCollection绑定到我的控件。
我目前有以下XAML:
<ComboBox x:Name="ActionCombo" ItemsSource="{Binding Path=ActionItems}" SelectedItem="{Binding DefaultItem}" Grid.Row="0">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged" SourceName="ActionCombo">
<ei:CallMethodAction MethodName="SetDefaultItem" TargetObject="{Binding Path=DataContext}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" >
<Button Command="{Binding ActionCommand}" >
<StackPanel Orientation="Horizontal" >
<TextBlock Text="{Binding Text}"/>
<TextBlock Text="{Binding Shortcut}" />
</StackPanel>
</Button>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>