gpt4 book ai didi

c# - 在 MVVM 中绑定(bind) ListPicker (Selection_Changed)

转载 作者:行者123 更新时间:2023-12-03 10:46:18 24 4
gpt4 key购买 nike

我正在尝试将命令附加到 ListPicker 的事件 Selection_Changed

我的 xaml 中有以下 listpicker 代码:

   <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);

但是我有错误说我传递的参数无效,这是为什么呢?

最佳答案

你需要这样做:

<toolkit:ListPicker x:name="picker" ItemsSource="{Binding Sentences}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<command:EventToCommand Command="{Binding PickerCommand, Mode=OneWay}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<toolkit:ListPicker.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding }"/>
</DataTemplate>
</toolkit:ListPicker.ItemTemplate>

进而
    public class MYViewModel :ViewModelBase
{
public MyViewModel()
{
PickerCommand = new RelayCommand<object>(ActionForPickerCommand);
}
public ICommand PickerCommand {get;set;}
}

使用 MVVM Light,它有一些有助于它的类。

关于c# - 在 MVVM 中绑定(bind) ListPicker (Selection_Changed),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24536285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com