Eine UWP ComboBox ItemsSource wird korrekt angezeigt, aber SelectedItem ist in der Liste nicht ausgewählt. Warum ist das so?Set SelectedItem für UWP ComboBox
Die XAML:
<ComboBox Name="FooComboBox"
ItemsSource="{x:Bind ViewModel.Foos}"
SelectedItem="{x:Bind ViewModel.Foo,Mode=TwoWay,Converter={StaticResource ChangeTypeConverter}}"/>
ChangeTypeConverter
kommt von Template10
Foos
und der Wert der Eigenschaft Foo
gesetzt ist in dem Ansichtsmodell
public class ViewModel : ViewModelBase
{
Foo _Foo = default(Foo);
public Foo Foo { get { return _Foo; } set { Set(ref _Foo, value); } }
public ObservableCollection<Foo> Foos = new ObservableCollection<Foo>(FooService.GetFoos());
public ViewModel()
{
Foo = FooService.GetDefaultFoo();
A Foo wie folgt aussehen
public class Foo
{
public Guid FooId { get; set; } = Guid.NewGuid();
public string FooCode { get; set; }
public override string ToString()
{
return FooCode;
}
}
Doch obwohl FooComboBox
korrekt die Liste der Foos
macht, wird die SelectedItem
nicht Foo
auf den aktuellen Wert der Eigenschaft festgelegt. Warum ist das so?
Does GetDefaultFoo() eine Instanz zurück, die in Foos eigentlich ist? Dh, verifiziere das 'Foos.Contains (Foo) == true' –
Danke für den Tipp @Henk Holterman. Ich kann sehen, 'Foo' ist in' Foo's' ... gleich 'FooId' und' FooCode', aber 'Foos.Contains (Foo)' gibt 'false' zurück. Ich kratze mich am Kopf und frage mich, warum das so sein könnte? – Vague
Ich vermute, dass GetDefaultFoo() die Werte von der gleichen Quelle (Db) erhält und dann seine eigene Instanz erstellt. –