组合框 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();
我有一个包含一些项目的组合框,我这样填充组合框:
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();