2013-01-06 14 views
6

Ich habe zwei Listen mit unterschiedlichen ItemsSource aber mit SelectedItem auf die gleiche Eigenschaft gebunden existiert nicht - „Namen“.Unselect alle Elemente, wenn die SelectedItem etwas gebunden ist, die in der Liste

Zuerst wähle ich den Punkt "c" in der rechten Liste, so dass auch der Punkt "c" in der linken Liste ausgewählt ist.

Dann habe ich ein anderes Element in der rechten Liste ausgewählt, aber das "c" in der linken Liste ist immer noch ausgewählt. Ich verstehe, warum es das tut, aber kann ich es deaktivieren das "c" in der rechten Liste?

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> 

-Code hinter:

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

Sie wollen also nach wie vor „c“ in beiden Listen ausgewählt werden, aber wenn nur ein Element in einer Liste besteht die selction klar aus das andere? –

+0

sa_ddam213 - genau! :) – Erez

+0

Bitte beachten Sie, dass Ihr Fenster bereits eine Eigenschaft [Name] (http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.name.aspx) hat. Dein neu erschaffenes ist also im Konflikt mit dem existierenden. Und in der Eigenschaft Name fehlt eine Änderungsbenachrichtigung. – Clemens

Antwort

7

Wenn Sie die SelectedItem Bindung an SelectedValue diesem Schalter verhält, wie Sie wollen, das SelectedItem nicht, weil seine Clearing nicht auf null eingestellt, weil die andere Liste einen Wertfestgelegt hatverhält sich etwas anders, da es ein Objekt finden muss oder es löscht die SelectedItem auf der Liste.

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

Hoffnung, die Sinn machen :)

enter image description here enter image description here

+0

Bellissimo, danke. – Erez