【问题标题】:Command binding not working - MVVM Light RelayCommand and XAML issues命令绑定不起作用 - MVVM Light RelayCommand 和 XAML 问题
【发布时间】:2015-07-01 02:23:33
【问题描述】:

我有一个列表框:

<ListBox Grid.Row="1"
            x:Name="TestCasesList"
            ItemsSource="{Binding TestCases}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Button Command="{Binding Path=DataContext.ButtonClickCommand_DisplayFailureDetails, ElementName=TestCasesList}"
                        CommandParameter="{Binding Failures}">
...

我的 DataContext 添加了一个视图模型:

<Window x:Class="blah.UI.Views.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:design="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    DataContext="{Binding Source={StaticResource Locator}, Path=Main}"
    Name="Window">

我有一个视图模型 RelayCommand:

    ButtonClickCommand_DisplayFailureDetails = new RelayCommand<List<Failure>>( (param) => Execute_ButtonClickCommand_DisplayFailureDetails(param) );


    public RelayCommand<List<Failure>> ButtonClickCommand_DisplayFailureDetails
    {
        get;
        private set;
    }

    private void Execute_ButtonClickCommand_DisplayFailureDetails( List<Failure> failures )
    {
        Failures = new ObservableCollection<Failure>(failures);
    }

按钮没有触发我的命令,有什么原因吗?

【问题讨论】:

    标签: c# xaml command mvvm-light


    【解决方案1】:

    尝试更改命令绑定,如下所示:

    <Button Command="{Binding RelativeSource={RelativeSource AncestorType=Window},Path=DataContext.ButtonClickCommand_DisplayFailureDetails}" ...> 
    

    通过这种方式,您可以获得您的窗口的DataContext 属性,该属性是使用您的 ViewModel 实例设置的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多