1

我正在尝试从我的列表视图中获取 selectedItem。我在按钮上使用 MVVM 灯光工具包和 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)正确触发,但我每次都得到空值。

这是我的按钮 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));
4

2 回答 2

1

摆脱命令参数绑定,在视图模型中创建 SelectedServer 属性,在视图模型中创建不带参数的命令

<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}" />

在您的视图模型中,您拥有执行命令逻辑所需的所有信息。

于 2012-06-14T10:41:09.627 回答
0

您还应该将列表视图的 SelectedItem 属性绑定到视图模型的属性(SelectedServer),并更改您的 EventToCommand

CommandParameter="{Binding SelectedItem, ElementName=serverListView}"

CommandParameter="{Binding SelectedServer}"
于 2012-06-14T10:15:40.000 回答