wpf列表框选中的项目作为命令参数传递给出了空引用异常

时间:2016-10-28 19:38:06

标签: c# wpf mvvm

我正在尝试将列表框中的选定项目作为CommandParameter从按钮传递。因此,当我在viewmodel中的Object obj处放置一个断点时,它会清楚地显示所选项目,但出于某种原因,当我尝试检索数据时返回Null。对于strList属性,我创建一个List并从视图模型中填充它并将其绑定到ListBox。请帮助我做错了什么。

XAML:

 <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
        </Grid.RowDefinitions>
        <ListBox SelectionMode="Multiple" x:Name="lstFunctions" ItemsSource="{Binding strList}" DisplayMemberPath="FunctionName" SelectedIndex="0">
        </ListBox>

        <Button Grid.Row="1" HorizontalAlignment="Right" Content="Ok" Command="{Binding OkFunctionCommand}" CommandParameter="{Binding ElementName=lstFunctions,Path=SelectedItems}"></Button>
    </Grid>

Function类如下:

Function.cs:

public class Function
    {
        public string NameSpace { get; set; }
        public string FunctionName { get; set; }
    }

视图模型:

我正在使用relay命令。当我在列表框中选择项目并单击“确定”按钮时,断点会触及此点。

private void FindSelectedFunction(object obj)
        {
            List<Function> selectedResults = obj as List<Function>; //selectedResults is always null.
            foreach(var item in selectedResults)
            {
                MessageBox.Show(item.FunctionName);
            }
        }

0 个答案:

没有答案