Я хотел бы создать список со связыванием ItemsSource и SelectedItem на объекте модели.
Привязка выполняется следующим образом:
<ItemsControl ItemsSource="{Binding Persons}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}" Width="150" />
<ListBox
BorderThickness="0"
Background="Transparent"
Margin="0 1"
ItemsSource="{Binding DataContext.Skills,RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}},Mode=OneWay}"
SelectedItem="{Binding MasterSkill, Mode=TwoWay}"
SelectionMode="Single"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
При первой загрузке работает, значение выбирается с зарегистрированными данными по умолчанию.
Проблема появляется после переключения / перезагрузки текущего пользовательского интерфейса viewModel.
Когда я возвращаюсь к ViewModel, SelectItem имеет значение null.
Значения обновляются после / после выхода из пользовательского интерфейса (при выгрузке).
Проблема исчезает, когда я использую delay (> 0) свойство или когда я устанавливаю UpdateSourceTrigger в LostFocus
Я создал пример моей проблемы на Github => здесь
(В примере вы должны зайти в окно «Управление навыками» и переключиться в «Управление проектом», чтобы, наконец, вернуться к навыкам)
Я думаю, что поток пользовательского интерфейса вызывает событие propertyChanged, когда элемент управления выгружается или уничтожается ... но я действительно не знаю, как избежать этой проблемы.
Большое спасибо за вашу помощь.