我正在尝试将列表框中的选定项目作为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);
}
}