2013-01-06 21 views
6

mam dwie listy o różnej ItemsSource ale z SelectedItem przyłączonym do tego samego obiektu - „Nazwa”.Odznacz wszystkie pozycje, gdy SelectedItem jest związany z czymś, co nie istnieje na liście

Najpierw wybieram pozycję "c" z prawej listy, aby wybrać pozycję "c" na lewej liście.

Niż wybrałem inny element z prawej listy, ale "c" na lewej liście jest wciąż zaznaczone. Rozumiem, dlaczego tak się dzieje, ale czy mogę usunąć zaznaczenie "c" z prawej listy?

enter image description here

XAML:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition /> 
     <ColumnDefinition /> 
    </Grid.ColumnDefinitions> 

    <ListView SelectedItem="{Binding Name}" ItemsSource="{Binding lstNames1}"/> 
    <ListView SelectedItem="{Binding Name}" ItemsSource="{Binding lstNames2}" Grid.Column="1"/> 
</Grid> 

Kod za:

public partial class selected : Window 
{ 
    public ObservableCollection<string> lstNames1 { get; set; } 
    public ObservableCollection<string> lstNames2 { get; set; } 

    public string Name { get; set; } 


    public selected() 
    { 
     Names1 = new ObservableCollection<string> {"a1", "b1", "c"}; 
     Names2 = new ObservableCollection<string> { "a2", "b2", "c" }; 
     InitializeComponent(); 
     DataContext = this; 
    } 
} 
+0

Więc nadal chcesz „c”, które zostaną wybrane w obu listach, ale gdy element istnieje tylko w jednej listy usunąć z selction inny? –

+0

sa_ddam213 - dokładnie! :) – Erez

+0

Należy pamiętać, że twoje okno ma już właściwość [Name] (http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.name.aspx). Tak więc twój nowo utworzony jest w konflikcie z już istniejącym. A w Twojej właściwości Name brakuje powiadomienia o zmianie. – Clemens

Odpowiedz

7

Jeśli przełącznik SelectedItem wiązanie z SelectedValue ten będzie zachowywał się jak chcesz To SelectedItem nie jest wyczyszczenie ponieważ jego nie ustawiono na null, ponieważ inna lista ustawiła wartość, SelectedValue działa nieco inaczej, ponieważ musi znaleźć element lub wyczyści listę SelectedItem na liście.

<ListView SelectedValue="{Binding Name}" ItemsSource="{Binding lstNames1}" /> 
<ListView SelectedValue="{Binding Name}" ItemsSource="{Binding lstNames2}" Grid.Column="1"/> 

Nadzieja, że ​​sens :)

enter image description here enter image description here

+0

Bellissimo, dziękuję. – Erez