繁体   English   中英

命令绑定不起作用 - MVVM Light RelayCommand 和 XAML 问题

[英]Command binding not working - MVVM Light RelayCommand and XAML issues

我有一个列表框:

<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);
    }

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM