C# DataGrid中的属性索引器

C# DataGrid中的属性索引器,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我有一个上下文菜单,我想在我的datagrid中使用它。每排我都想看一下菜单 如果isRunTest==false,则仅显示第一个菜单项 如果IsRunTest==true,则仅显示第二个菜单项 是否可以根据测试集的属性,每行显示两个菜单项中的一个?我想知道是否需要将IsRunTest属性设置为索引器,但不确定如何做到这一点并使其适用于每一行 <DataGrid ItemsSource="{Binding TestResults}" SelectedItem="{Binding

我有一个上下文菜单,我想在我的datagrid中使用它。每排我都想看一下菜单

如果isRunTest==false,则仅显示第一个菜单项 如果IsRunTest==true,则仅显示第二个菜单项 是否可以根据测试集的属性,每行显示两个菜单项中的一个?我想知道是否需要将IsRunTest属性设置为索引器,但不确定如何做到这一点并使其适用于每一行

<DataGrid ItemsSource="{Binding TestResults}" 
    SelectedItem="{Binding SelectedTestResult}">
<DataGrid.ContextMenu>
    <ContextMenu>
        <MenuItem Header="Run To Selected Test" 
            Command="{Binding RunToSelectedTestAction}"
            Visibility="{Binding IsRunToTestSet, 
            Converter={StaticResource BoolToVisibilityConverter}, 
            ConverterParameter=Visible}" />

        <MenuItem Header="Remove Run To Selected Test" 
            Command="{Binding RemoveRunToSelectedTestAction}" 
            Visibility="{Binding IsRunToTestSet, 
            Converter={StaticResource BoolToVisibilityConverter}, 
            ConverterParameter=Collapsed}" />
    </ContextMenu>
</DataGrid.ContextMenu>

...Defined Columns

</DataGrid>

ViewModel Properties

public ObservableCollection<TestResultsModel> TestResults
{
    get
    {
        return this.testResults;
    }

    set
    {
        this.testResults = value;

        this.NotifyPropertyChanged(m => m.TestResults);
    }
}

public TestResultsModel SelectedTestResult
{
    get
    {
        return this.selectedTestResult;
    }

    set
    {
        this.selectedTestResult = value;

        this.NotifyPropertyChanged(m => m.SelectedTestResult);
    }
}

public bool IsRunToPCodeSet
{
    get
    {
        return this.SelectedTestResult.IsRunToPCodeSet;
    }

    set
    {
        this.SelectedTestResult.IsRunToPCodeSet = value;

        this.NotifyPropertyChanged(m => m.IsRunToPCodeSet);
    }
}

这实际上看起来应该运行良好。你在看什么?是否同时显示两个菜单项?或者根本没有?在选择一行之前,我只看到第一个菜单项。如果我然后选择一行,它似乎像预期的那样工作。但在另一行,我看到两个菜单项,我只想看到第一个,因为我没有在那一行选择任何东西。