与DataTemplate的绑定问题?

时间:2010-11-03 10:00:34

标签: c# binding

我在Window.Resources中有一些XAML代码:

        <ContextMenu x:Key="ParentContextMenu">
            <MenuItem Header="MenuItem..." Command="{Binding SomeCommand}"/>
        </ContextMenu>
        <DataTemplate x:Key="ChildDataTemplate" DataType="{x:Type System:String}">
            <TextBlock Text="{Binding}" VerticalAlignment="Bottom" />
        </DataTemplate>
        <HierarchicalDataTemplate x:Key="ParentDataTemplate" DataType="{x:Type ViewModels:IParentViewModel}" ItemsSource="{Binding Path=Agents}" ItemTemplate="{StaticResource ChildDataTemplate}">
            <StackPanel Orientation="Horizontal" ContextMenu="{StaticResource ParentContextMenu}">
                <TextBlock Text="{Binding ServerName}" />
            </StackPanel>
        </HierarchicalDataTemplate>

然后

<TreeView ItemsSource="{Binding Items}" ItemTemplate="{StaticResource ParentDataTemplate}"/>

为什么SomeCommand没有绑定到Context菜单项?

我确信DataContext包含一个ViewModel,因为其他命令运行良好。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

此XAML存在任何问题。 所以,我认为你需要抄袭实现IParentViewModel的类。 1)在我看来,你的SomeCommand就像SomeCommand : ICommand。验证访问修饰符是否公开(公开 class SomeCommand : ICommand

2)验证命令属性的访问修饰符是否为public (例如

  public SomeCommand SomeCommand
  {
        get { return _someCommand; }
            set
            {
                _someCommand = value;
                OnPropertyChanged("SomeCommand");
            }
        }

3)确认您已创建命令实例(private SomeCommand _someCommand = new SomeCommand();

另外,如果您有依赖项属性,请执行此操作。 希望它有所帮助。