为什么 SelectedItem 属性不适用于 ComboBoxItem 字符串?

发布于 2024-11-04 07:00:15 字数 587 浏览 6 评论 0原文

我想通过组合框项目的字符串值来选择它们,但我有一个问题。 一个简单的测试:

<ComboBox SelectedItem="text1" ItemsSource="{Binding MyListOfStrings}">
</ComboBox>

MyListOfStrings 具有包含字符串“text1”、“text2”、“text3”的列表。这样它就可以正常工作 - text1 被选中。

但下面的方法不行:

<ComboBox SelectedItem="text1">
 <ComboBoxItem>text1</ComboBoxItem>
 <ComboBoxItem>text2</ComboBoxItem>
 <ComboBoxItem>text3</ComboBoxItem>
</ComboBox>

有什么问题吗?如果我在 XAML 中定义项目,为什么 WPF 找不到 text1?

PS 实际上SelectedItem使用数据绑定,我只是简化了示例。

I want to select combobox items by their string value but I have a problem.
A simple test:

<ComboBox SelectedItem="text1" ItemsSource="{Binding MyListOfStrings}">
</ComboBox>

MyListOfStrings has list with strings "text1", "text2", "text3". This way it works fine - the text1 gets selected.

But the following way does not work:

<ComboBox SelectedItem="text1">
 <ComboBoxItem>text1</ComboBoxItem>
 <ComboBoxItem>text2</ComboBoxItem>
 <ComboBoxItem>text3</ComboBoxItem>
</ComboBox>

What is wrong with it? Why WPF cannot find text1 if I define items in XAML?

P.S. Actually SelectedItem uses data binding, I just simplified the example.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我们只是彼此的过ke 2024-11-11 07:00:15

您可以使用 Selector.IsSelected="True" 为该 ComboItem 设置所选项目

<ComboBox>
 <ComboBoxItem Selector.IsSelected="True">text1</ComboBoxItem>
 <ComboBoxItem>text2</ComboBoxItem>
 <ComboBoxItem>text3</ComboBoxItem>
</ComboBox>

编辑:

如果您使用 Binding,请创建一个 ComboBoxItem 属性

 public ComboBoxItem MyProperty
    {
        get
        {
            ComboBoxItem ci = new ComboBoxItem();
            ci.Content = "text1";
            return ci;
        }
    }

并 Bind

SelectedItem="{Binding Path=MyProperty}"

you can set the selected item with Selector.IsSelected="True" for that ComboItem

<ComboBox>
 <ComboBoxItem Selector.IsSelected="True">text1</ComboBoxItem>
 <ComboBoxItem>text2</ComboBoxItem>
 <ComboBoxItem>text3</ComboBoxItem>
</ComboBox>

Edit :

if you are using Binding, creat a ComboBoxItem property

 public ComboBoxItem MyProperty
    {
        get
        {
            ComboBoxItem ci = new ComboBoxItem();
            ci.Content = "text1";
            return ci;
        }
    }

and Bind

SelectedItem="{Binding Path=MyProperty}"
七堇年 2024-11-11 07:00:15

我想它不起作用,因为 ComboBoxItem 不是字符串,并且没有从字符串到 ComboBoxItem 的转换器。
但 ComboBoxItem 提供了一个您可以使用的“IsSelected”属性。

I guess it doesn't work because ComboBoxItem is not a string, and there is no converter from string to ComboBoxItem.
But ComboBoxItem offers a "IsSelected" property that you could use.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文