C#/WPF
[C#/WPF] Listview SelectedItems command Binding (MVVM패턴)
HyoSeong
2023. 2. 20. 23:00
반응형
WPF의 Listview는 많은 데이터를 표시할 수 있도록 도와주는 UI 요소 중 하나입니다.
이전에는 SelectedItems 속성을 바인딩하는 것이 불가능했지만, 최신 버전의 WPF에서는 Command로 처리할 수 있도록 업데이트되었습니다.
이번에는 Prism 라이브러리를 이용하여 Mvvm 패턴을 적용한 예제를 살펴보겠습니다.
Prism은 MVVM 패턴을 구현하는 데 도움이 되는 많은 기능을 제공합니다.
우선, Prism 라이브러리를 사용하려면 NuGet 패키지 관리자에서 Prism.Core 패키지를 설치해야 합니다.
설치 후, ListView와 Command를 바인딩하는 방법을 알아보겠습니다.
ListView의 Behaviors 클래스 가져오기
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:prism="http://prismlibrary.com/"
ListView에 대한 Behaviors 클래스를 사용하여 SelectedItems와 연결된 ICommand를 설정합니다.
<ListView Name="myListView" ItemsSource="{Binding MyItems}" SelectionMode="Multiple">
<i:Interaction.Behaviors>
<prism:InvokeCommandAction Command="{Binding MyCommand}" CommandParameter="{Binding ElementName=myListView, Path=SelectedItems}" />
</i:Interaction.Behaviors>
</ListView>
위의 코드에서 MyCommand는 ICommand를 구현한 ViewModel의 속성입니다.
이 속성은 SelectedItems 속성과 연결됩니다.
ViewModel에서 MyCommand 속성을 구현합니다.
public class MainViewModel : BindableBase
{
private ObservableCollection<string> _myItems;
private ICommand _myCommand;
public ObservableCollection<string> MyItems
{
get { return _myItems; }
set { SetProperty(ref _myItems, value); }
}
public ICommand MyCommand
{
get { return _myCommand; }
set { SetProperty(ref _myCommand, value); }
}
public MainViewModel()
{
MyItems = new ObservableCollection<string>() { "Item 1", "Item 2", "Item 3", "Item 4" };
MyCommand = new DelegateCommand<IList>(OnMyCommandExecuted);
}
private void OnMyCommandExecuted(IList selectedItems)
{
// do something with selected items
}
}
위의 코드에서 DelegateCommand를 사용하여 MyCommand 속성을 구현합니다.
이 속성은 SelectedItems 속성과 연결됩니다. OnMyCommandExecuted 메서드에서는 선택된 항목을 처리합니다.
이제 ListView의 SelectedItems를 ICommand와 바인딩하는 방법과 Prism 라이브러리를 사용하여 Mvvm 패턴을 구현하는 방법을 알아봤습니다. 이를 통해 ViewModel에서 ListView의 선택된 항목을 처리할 수 있습니다.
감사합니다.
반응형