【问题标题】:Error when binding WPF combobox ItemsSource to an Array of Strings将 WPF 组合框 ItemsSource 绑定到字符串数组时出错
【发布时间】:2013-12-19 01:41:48
【问题描述】:

我无法将组合框的 ItemsSource 设置为数组。我尝试将 DataContext 设置为找到 Array 的类,然后在 XAML 中设置绑定

 class Car
{
    public string[] makes;
}

...

public MainWindow()
{
    Car _Car = new Car();
    _Car.makes = new string[]
        {
            "Toyota",
            "Mitsubishi",
            "Audi",
            "BMW"           
        };

    this.DataContext = _Car;
}

然后在 XAML 中

<ComboBox Name="cars" Grid.Column="0" 
              Grid.Row="0" Margin="5" 
              ItemsSource="{Binding Path=makes}"/>

它似乎没有做任何事情。我的汽车组合框没有任何项目。

我也尝试过明确分配

cars.ItemsSource= new string[]{
                "Toyota",
                "Mitsubishi",
                "Audi",
                "BMW"           
            };

然后我收到以下错误消息:

调用的目标已抛出异常。

有什么我错过的吗?

【问题讨论】:

    标签: c# wpf binding combobox itemssource


    【解决方案1】:

    WPF 绑定不支持字段。使其成为具有 getter 和 setter 的属性

    class Car
    {
        public string[] makes { get; set; }
    }
    

    无论如何,您不必明确声明Path,这样就足够了

    <ComboBox Name="cars" Grid.Column="0" 
              Grid.Row="0" Margin="5" 
              ItemsSource="{Binding makes}"/>
    

    【讨论】:

    • 哇。它起作用了,谢谢!.. 但是,当“makes”已经设置为“public”时,我的理解是其他功能已经可以访问它怎么办?
    • @CarlNathanMier 可以访问,但这还不够。 WPF 绑定适用于需要属性的PropertyDescriptor 模型。你可以阅读更多关于它here
    • 谢谢,但您是否也知道为什么要分配 'cars.ItemsSource= new string[]{ "Toyota", "Mitsubishi", "Audi", "BMW" };'返回异常?谢谢
    • @CarlNathanMier 我的猜测是您可能会在 xaml ItemsSource="{Binding makes}" 和代码隐藏中设置两次 ItemsSource,但您应该查看内部异常以获取更多详细信息。 ..
    【解决方案2】:

    为了使数据绑定正常工作,您需要绑定一个“属性”。

    XAML

    <ComboBox Name="cars" Grid.Column="0" 
              Grid.Row="0" Margin="5" 
              ItemsSource="{Binding makes}"/>
    

    代码

    class Car
    {
        public string[] makes { get; set; }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 2012-05-05
      • 1970-01-01
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      相关资源
      最近更新 更多