我正在尝试从列表视图中获取selectedItem。我在按钮上使用MVVM light toolkit和EventToCommand。
我的listView绑定到正确绑定的ObservableCollection。这是listView xaml:
<ListView Name="serverListView"
Grid.Row="3"
Grid.Column="0"
Grid.ColumnSpan="2"
ItemsSource="{Binding Servers}"
ItemTemplate="{StaticResource ServerList}"
SelectionMode="Single"
BorderThickness="0"/>
然后我有一个按钮,我正在使用带有mvvm EventToCommand的Interaction.Triggers,我不确定selectedItem绑定是否正确。该事件通过中继命令(mvvm light toolkit)正确触发,但每次都是null。
这是我的按钮xaml;
<Button x:Name="LoadButton"
Content="Load Server"
Grid.Column="0"
Grid.Row="4"
Grid.ColumnSpan="2">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<mvvm:EventToCommand Command="{Binding ButtonClick, Mode=OneWay}"
CommandParameter="{Binding SelectedItem, ElementName=serverListView}"
MustToggleIsEnabledValue="True"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
接力命令:
this.ButtonClick = new RelayCommand<object>(new Action<object>(this.GetClickEvent));
答案 0 :(得分:1)
摆脱命令参数绑定,在viewmodel中创建一个SelectedServer属性,在没有参数的viewmodel中创建Command
<ListView Name="serverListView"
Grid.Row="3"
Grid.Column="0"
Grid.ColumnSpan="2"
ItemsSource="{Binding Servers}"
ItemTemplate="{StaticResource ServerList}"
SelectedItem="{Binding SelectedServer}"
SelectionMode="Single"
BorderThickness="0"/>
<Button Command="{Binding MyCommand}" />
在您的viewmodel中,您拥有执行命令逻辑所需的所有信息。
答案 1 :(得分:0)
您还应该将listview的SelectedItem属性绑定到viewmodel的属性(SelectedServer),并更改EventToCommand
CommandParameter="{Binding SelectedItem, ElementName=serverListView}"
到
CommandParameter="{Binding SelectedServer}"