创建Silverlight按钮列表(多个操作按钮)的最佳方法是什么?

时间:2011-11-24 04:21:23

标签: silverlight button command

我想创建一个“多动作按钮”,因为想要一个更好的名字。即一个看起来类似于ComboBox的按钮(即一端带有切换箭头的内容),其中根内容是可直接点击的按钮,或者可以单击切换按钮以显示更多按钮,每个按钮绑定到不同的文本和绑定一个不同的命令。

应该有一个默认按钮,它总是在ComboBox的根目录中可见 - 即如果用户打开组合框,当它关闭时,默认项目应该仍然可见,即使他们已经点击(选中)了另一个项目

我用ComboBox控件尝试了这个,虽然它在那里大约75%,我实际上开始怀疑我是否朝着正确的方向前进。

xaml和代码如下。我目前遇到的问题是:

  • 单击活动按钮(即CanExecute = true)时,组合框不会关闭,但是当单击非活动按钮时,组合框会关闭
  • 组合框的根目录中显示的按钮不可点击 - 即首先必须打开组合(在这种情况下,默认项目是重复的),并且可以单击列表中的项目

组合框是否是正确的解决方案?如果是这样,我将如何达到以上几点。如果没有,什么是更好的解决方案?

我已经按如下方式定义了一个类:

    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>

0 个答案:

没有答案