2015-01-17 3 views
2

ListView 두 개가 각각 내 ViewModel의 특정 컬렉션에 바인딩되어 있고 전적으로 하나의 항목 만 선택할 수 있기를 원합니다.두 개의 ListView에서 하나의 항목 만 선택

ListView은 ViewModel의 동일한 속성에 연결된 SelectedItem 속성을 가지고 있습니다.

내 문제는 다음과 같습니다. ListView에서 항목을 선택한 다음 다른 ListView에서 다른 항목을 선택하면 첫 번째 항목이 선택된 상태로 유지됩니다. 코드 숨김으로이 작업을 수행 할 수 있지만 순수한 XAML 솔루션이 있는지 알고 싶습니다.

XAML :

<ListView SelectionMode="Single" ItemsSource="{Binding Path=MyList1}" SelectedItem="{Binding Path=MySelectedItem}"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Name}" /> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
<ListView SelectionMode="Single" ItemsSource="{Binding Path=MyList2}" SelectedItem="{Binding Path=MySelectedItem}"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Title}" /> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
+0

변경되면'MySelectedItem' 속성이'INPC.PropertyChanged' 이벤트를 발생합니까? – dkozl

+0

예,이 속성의 설정자에서 PropertyChanged 이벤트가 발생합니다. –

+0

그리고'MySelectedItem'은'ListView' 둘 다에 대한 하나의 속성이고, MyList1과 MyList2와 같은 클래스에 정의되어 있고, ListView 중 하나를 선택할 때 setter가 호출된다는 것을 디버거에서 확인 했습니까? – dkozl

답변

0

당신은 당신의 SelectedItemMode=TwoWay를 사용해야합니다. 그것은 작동해야합니다.

+0

itemscontrol의 SelectedItem은 기본적으로 양방향으로 바인딩됩니다. 당신은 기본적으로 기본값을 강제합니다. –

3

으로 대체하여 SelectedItem을 마침내 교체했습니다.

이 사용 사례에서는 두 속성이 모두 동일한 동작을하지만 바운드 선택한 항목이 목록에없는 경우 후자는 선택 취소를 올바르게 처리합니다.

관련 문제