【发布时间】:2014-07-02 16:21:52
【问题描述】:
我正在尝试将命令附加到 ListPicker 的事件 Selection_Changed
我的 xaml 中有以下列表选择器代码:
<toolkit:ListPicker
x:name="picker" ItemsSource="{Binding Sentences}"
SelectionChanged="{Binding PickerCommand, Mode=TwoWay}" >
<toolkit:ListPicker.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding }"/>
</DataTemplate>
</toolkit:ListPicker.ItemTemplate>
</toolkit:ListPicker>
Sentences 只是我的 ViewModel 中的一个字符串列表,我怎样才能创建一个简单的 Commad 例如,它只会在 ListPicker 中显示一个带有当前选定字符串的 MessageBox ?
类似于我在后面的代码中写的这个函数:
private void PickerCommand(object sender, SelectionChangedEventArgs e)
{
if (piker.SelectedItem != null)
{
MessageBox.Show(piker.SelectedItem.ToString());
}
}
编辑:
我刚刚创建了这个简单的函数:
public void Test()
{
MessageBox.Show("Test!");
}
通过了:
PickerCommand = new RelayCommand<SelectionChangedEventArgs>(Test);
但我有错误说我传递的参数无效,这是为什么呢?
【问题讨论】:
-
您不需要使用该语法将控件绑定到事件。你只需要:
SelectionChanged="PickerCommand" -
但是如何在视图模型中编写这样的命令?
-
在您的 VM 中创建一个名为 SelectedSentence 的属性,将其绑定到 SelectedItem。你可以在你的虚拟机中检查它,然后在你的命令中采取相应的行动。完成。
-
你能写一个代码吗?我仍然不知道该怎么做我是 mvvm 的新手
-
对不起 - 我的错误,应该读两遍 - 这是你想要的一个例子:social.technet.microsoft.com/wiki/contents/articles/…
标签: c# xaml windows-phone-8 mvvm windows-phone