UWP에서 응용 프로그램을 만들고 있는데 질문이 있습니다. SelectionChanged 이벤트 (예 : ListView) 또는 다른 이벤트와 MVVM Light를 어떻게 든 연결할 수 있습니까? ListView에서 일부 항목을 클릭하면 SelectionChanged가 호출됩니다.Conection MVVM Light with SelectionChanged
어떻게하면됩니까?
UWP에서 응용 프로그램을 만들고 있는데 질문이 있습니다. SelectionChanged 이벤트 (예 : ListView) 또는 다른 이벤트와 MVVM Light를 어떻게 든 연결할 수 있습니까? ListView에서 일부 항목을 클릭하면 SelectionChanged가 호출됩니다.Conection MVVM Light with SelectionChanged
어떻게하면됩니까?
ViewModel에 메소드를 작성하고 x:bind
을 ViewModel에 연결할 수 있습니다.
MVVMLight의 메서드는 메서드에서 이벤트를 바인딩 할 수없는 WPF에서 사용됩니다.
UWP는 x:bind
을 사용하여 UI 이벤트를 ViewModel에 바인딩 할 수 있습니다.
XAML :
<ListView SelectionChanged = "{x:bind view.SelectionChanged }"/>
XAML.cs :
private ViewModel View{set;get;}
뷰 모델 :
public void SelectionChanged()
{
}
당신은 대해서 itemClick 이벤트를 사용할 수있는 때를 실행할 것 클릭 그는 ListViewItem입니다. 당신의 ViewModel 뭔가 내부
* .cs
컨트롤에 가서 --Thenxmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
당신의 viewSomemthing.xaml --For 네임 스페이스에서
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;
}
}
}
, 우리는 ' 콤보 박스를 예로 들어 보겠습니다.
<ComboBox ... />
<i:Interaction.Triggers>
<EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding DoSelectionChangedCommand}"/>
</EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
이 호에 대한 모든 업데이트는 있습니까? 이 문제와 관련하여 다른 문제가 있으시면 언제든지 알려 주시기 바랍니다. –