如何使用 Caliburn.micro 在 ComboBox 中显示 List<string> 的内容?

How to show contents of List<string> in ComboBox using Caliburn.micro?

我无法简单地使用 Caliburn.micros BindableCollection 在 ComboBox 中显示我的列表内容。我得到三个空白选项,但当我选择其中一个时,我得到了正确的值,所以我知道它正在工作。显然我也想看看我选择的是什么

我试过创建一个本地字符串并在 for 循环中让它 = myList[i]。我什至创建了一个随机字符串并尝试使用相同的命名约定将它绑定到我的 TextBlock,但我就是无法让它工作。我不会在这里添加它,因为它不起作用。希望你们中的一员能推动我朝着正确的方向前进。我是 Caliburn、MVVM、绑定等方面的新手......

    public List<string> languages = new List<string> {"ENGLISH", "SPANISH", "CHINESE"};

    public BindableCollection<string> Language { get; set; }

    public SettingsViewModel()
    {
        Language = new BindableCollection<string>();

        for (int i = 0; i < languages.Count; i++)
        {
            Language.Add(languages[i]);
        }
    }

//XAML代码\

            <ComboBox ItemsSource="{Binding Language}">
                <ComboBox.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding LanguageOptions}" />
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>

问题出在下面一行。

<TextBlock Text="{Binding LanguageOptions}" />

属性 LanguagestringBindableCollection。它没有名为 LanguageOptions.

的子 属性

您可以改为使用以下内容

<ComboBox ItemsSource="{Binding Language}">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding}" />
            </DataTemplate>
        </ComboBox.ItemTemplate>
</ComboBox>

或者为了使其更简单,您可以避免使用 ItemTemplate。例如,

<ComboBox ItemsSource="{Binding Language}"/>

这将帮助您修复组合框。