组合框 SelectedItem 在 UWP 中不起作用

Combobox SelectedItem is not working in UWP

我有一个包含一些项目的组合框,我这样填充组合框:

var files = Directory.GetFiles(Constants.TranslationsPath);
var items = new ObservableCollection<Translation>();
using var db = new AlAnvarDBContext();
if (files.Count() > 0)
 {
   foreach (var file in files)
   {
     var id = Path.GetFileNameWithoutExtension(file);
     var trans = db.Translations.Where(x => x.Link.Contains(id)).FirstOrDefault();
     if (trans != null)
     {
      items.Add(trans);
     }
   }
   cmbTranslators.ItemsSource = items;
   cmbTranslators.SelectedItem = Settings.DefaultTranslation;
 }

和xaml:

<ComboBox x:Name="cmbTranslators">
                <ComboBox.ItemTemplate>
                    <DataTemplate x:DataType="table:Translation">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{x:Bind Name}"/>
                            <TextBlock Text="-"/>
                            <TextBlock Text="{x:Bind Language}"/>
                            <TextBlock Text="-"/>
                            <TextBlock Text="{x:Bind Translator}"/>
                        </StackPanel>
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>

问题是默认项 (SelectedItem) 未 selected,我需要 select 组合框中的默认项。

是否有可能 Settings.DefaultTranslation 不等于项目集合中的任何 items,这就是没有发生分配的原因?也许你可以像第一个元素一样将它添加到你的集合 Settings.DefaultTranslation 并设置 cmbTranslators.SelectedIndex = 0

cmbTranslators.SelectedItem = cmbTranslators.Items.Where(x=>((Translation)x).Id == Settings.DefaultTranslation.Id).FirstOrDefault();