以编程方式在MVVM中添加按钮但命令不起作用

时间:2015-06-11 07:16:21

标签: wpf mvvm telerik

我试图动态添加按钮并且它起作用,但命令不起作用。

我收到错误

  

ItemTemplate和ItemTemplateSelector将被ItemsControl的容器类型的项目忽略;类型=' RadRibbonButton'

<telerik:RadRibbonGroup>
 ...
<telerik:RadRibbonGroup.DataContext>
    <vm:Group1/>
</telerik:RadRibbonGroup.DataContext>

        <ItemsControl ItemsSource="{Binding ButtonsCollection}"  >
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Button Content="{Binding}" Command="{Binding DataContext.ButtonCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadRibbonGroup}}}"   />
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>

</telerik:RadRibbonGroup>



ButtonCommand= new DelegateCommand(ExecuteCommand);

private void ExecuteCommand()
{
     ...
}

2 个答案:

答案 0 :(得分:0)

  1. 检查它是否在调试模式下到达命令。
  2. 你的ButtonsCollection是依赖属性吗?你提出改变吗?
  3. 您不应该在按钮集合中添加实际按钮,这不是纯粹的mvvm。您需要在数据模板中创建按钮,并在集合中创建属性,如按钮的内容等。
  4. 如果你仍然坚持创建实际按钮,我认为模板&#34;&#34;不会工作。试试&#34;

答案 1 :(得分:0)

  1. 未达到
  2. ObservableCollection按钮(我可以看到视图中的按钮)
  3. 3.我应该创建并添加按钮到集合运行时(这背后有特殊的逻辑)。在构造函数中我创建命令