【问题标题】:Binding menu item to command将菜单项绑定到命令
【发布时间】:2014-06-24 15:24:20
【问题描述】:

我正在尝试将命令绑定到视图模型,但它没有触发

    xmlns:ViewModel="clr-namespace:Lister.WPF.ViewModels"
    DataContext="{Binding ViewModel:TweetViewModel}" Icon="pack://siteoforigin:,,,/Resources/internet_down_16_hot.png" Loaded="Window_Loaded">
<Grid>
    <!--Test-->
    <DockPanel>
        <Menu DockPanel.Dock="Top">
            <MenuItem BorderThickness="5" Header="Status">
                <MenuItem BorderThickness="5" Header="Timeline" Command="{Binding  RefreshTweetsCommand}"/>

这是来自虚拟机的代码

    private RelayCommand _refreshTweetsCommand;
    public RelayCommand RefreshTweetsCommand
    {
        get
        {
            return _refreshTweetsCommand ??
                   (_refreshTweetsCommand =
                    new RelayCommand(RefreshTweetList, LoadTweets));
        }
    }

【问题讨论】:

  • 作为弹出控件,ContextMenu 不在可视化树中——因此它不继承 DataContext。有解决方法,请参见此处,例如:stackoverflow.com/a/3910726/1001985
  • @McGarnagle 这是菜单而不是 ContextMenu,它将具有父级的 DataContext。
  • 它不是上下文菜单,该命令运行良好
  • @nit 我的错,对不起。必须更加小心核关闭。

标签: c# wpf


【解决方案1】:

DataContext="{Binding ViewModel:TweetViewModel}"这不是绑定DataContext的方法。

如下设置你的DataContext:

<Window>
  <Window.DataContext>
    <ViewModel:TweetViewModel/>
  </Window.DataContext>
</Window>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 2016-08-12
    • 2012-12-15
    • 2011-06-08
    相关资源
    最近更新 更多