WPF Master-Details-Ansicht mit Listbox und Combobox mit Bindung

Habe ich gesucht um eine Antwort auf meine Frage jetzt seit ein paar Tagen, aber bin nicht in der Lage, eine Lösung zu finden.

Das problem ist, dass die combobox aktualisiert die Test-Objekt im User-Klasse, mit der die zuvor ausgewählte Benutzer'.

d.h. Sie wählen Sie Benutzer2 und user2 hat test2 wählen Sie dann, user5, dass hat test5. Nun, wenn Sie wählen Sie Benutzer2 wieder, es wird sich zeigen, dass es test5.

Hier ist ein code. Ich habe zwei-Klassen-Benutzer und-Tests. Und zwei ObservableCollections für jeden von denen. Dies ist, wie ich habe Sie setup:

public class User
{
    public string Name { get; set; }
    public int test { get; set; }
    public test userTest { get; set; }
}

public class test
{
    public int ID { get; set; }
    public String Name { get; set; }
}

public class ListOfTests:ObservableCollection<test>
{
    public ListOfTests()
    {
        for (int i = 0; i < 4; i++)
        {
            test newTest = new test();
            newTest.ID = i;
            newTest.Name = "Test " + i;
            Add(newTest);
        }
    }
}

public class ListOfUsers: ObservableCollection<User>
{
    public ListOfUsers()
    {
        ListOfTests testlist = new ListOfTests();
        for (int i = 0; i < 10; i++)
        {
            User newUser = new User();
            newUser.Name = "User " + i;
            newUser.ID = i;
            newUser.userTest = testlist[i];
            Add(newUser);
        }
    }
}

Und XAML:

<Window x:Class="ComboboxTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ComboboxTest"
Title="Window1" Height="300" Width="300">
<StackPanel x:Name="SP1">
    <StackPanel.Resources>
        <local:ListOfTests x:Key="ListOfTests" />
    </StackPanel.Resources>
    <ListBox ItemsSource="{Binding}" DisplayMemberPath="Name" IsSynchronizedWithCurrentItem="True"/>
    <TextBox Text="{Binding Path=Name}" Foreground="Black"  />
    <TextBox Text="{Binding Path=userTest}" />  
    <ComboBox SelectedItem="{Binding Path=userTest}" 
              SelectedValue="{Binding Path=userTest.ID}"
              ItemsSource="{Binding Source={StaticResource ListOfTests}}" 
              DisplayMemberPath="Name" 
              SelectedValuePath="ID"

              Foreground="Black" />
</StackPanel>

Nun, wenn ich die Bindung auf den SelectedItem auf "{Binding Path=userTest, Mode=OneWay}", dann funktioniert es, aber ich kann es nicht ändern es manuell.

Hier ist ein kicker gedacht... Wenn ich den Gegner .Net 4.0 (VS2010), dann funktioniert es einwandfrei...

Kann jemand bitte helfen Sie mir eine Lösung finden?

Schreibe einen Kommentar