私はUWPでアプリケーションを作成していますが、質問があります。 MVVM LightとSelectionChangedイベント(ListViewなど)を別の方法で接続することはできますか? ListViewでアイテムをクリックすると、SelectionChangedが呼び出されます。Conection MVVM Light with SelectionChanged
どうすればよいですか?
私はUWPでアプリケーションを作成していますが、質問があります。 MVVM LightとSelectionChangedイベント(ListViewなど)を別の方法で接続することはできますか? ListViewでアイテムをクリックすると、SelectionChangedが呼び出されます。Conection MVVM Light with SelectionChanged
どうすればよいですか?
ViewModelにメソッドを記述し、接続ViewModelにx:bind
を使用できます。
MVVMLightのメソッドは、WPFで使用され、メソッドのイベントをバインドできません。
UWPでは、x:bind
を使用して、UIイベントをViewModelにバインドできます。
サンプル:
XAML:
<ListView SelectionChanged = "{x:bind view.SelectionChanged }"/>
XAML.cs:
private ViewModel View{set;get;}
のViewModel:
public void SelectionChanged()
{
}
あなたが実行されますによってitemClickイベントを使用することができますクリックしてください彼はListViewItem。 *名前空間
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
--ForあなたviewSomemthing.xaml では.cs
public class RelayCommand : ICommand
{
private Predicate<object> _canExecute;
private Action<object> _execute;
public RelayCommand(Predicate<object> canExecute, Action<object> execute)
{
this._canExecute = canExecute;
this._execute = execute;
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public bool CanExecute(object parameter)
{
return _canExecute(parameter);
}
public void Execute(object parameter)
{
_execute(parameter);
}
}
public class MyViewModel
{
private ICommand _doSelectionChangedCommand;
public ICommand DoSelectionChangedCommand
{
get
{
if (_doSelectionChangedCommand == null)
{
_doSelectionChangedCommand = new RelayCommand(
p => this.CanSelectionChanged,
p => this.DoSomeImportantMethod());
}
return _doSomething;
}
}
}
があなたのコントロールに下る--Then、私たちは」あなたのviewmodel何かインサイド
例としてComboboxを使用します。
<ComboBox ... />
<i:Interaction.Triggers>
<EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding DoSelectionChangedCommand}"/>
</EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
この問題に関する最新情報はありますか?この問題に関して他にも懸念がある場合は、お気軽にお知らせください。 –