带有集合的列表框中的绑定问题

时间:2014-04-29 18:52:15

标签: c# wpf collections binding listbox

我有一个带有6个列表框的窗口,我正在尝试创建一个小型汽车数据库,但我在第二个列表框中遇到了绑定问题。当我尝试点击第一个列表框中的制造商时,绑定不起作用。

<Window x:Class="Autolab.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="500" Width="700"
    Loaded="Window_Loaded_1">
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="119*" />
        <ColumnDefinition Width="116*" />
        <ColumnDefinition Width="137*" />
        <ColumnDefinition Width="137*" />
        <ColumnDefinition Width="134*" />
        <ColumnDefinition Width="134*" />
    </Grid.ColumnDefinitions>

    <ListBox x:Name="hersteller" Grid.Column="0" DisplayMemberPath="h_name" SelectedValuePath="h_id"/>

    <ListBox x:Name="marke" Grid.Column="1" 
              ItemsSource="{Binding SelectedItem.marken, ElementName=hersteller}" />

    <ListBox x:Name="kraftstoff" Grid.Column="2" />
    <ListBox x:Name="art" Grid.Column="3" />
    <ListBox x:Name="werkstatt" Grid.Column="4" />


</Grid>

这是我有我的收藏品

public partial class herstellers
{
    public herstellers()
    {
        this.marken = new HashSet<marke>();
    }

    public int h_id { get; set; }
    public string h_name { get; set; }

    public virtual ICollection<marke> marken { get; set; }
}

}

Window

my Model

1 个答案:

答案 0 :(得分:0)

首先,我建议使用ObservableCollection而不是HashSet使用ListBox

public partial class herstellers
{
    public herstellers()
    {
        this.marken = new ObservableCollection<marke>();
    }

    public int h_id { get; set; }
    public string h_name { get; set; }

    public virtual ICollection<marke> marken { get; set; }
}

接下来,假设您的marken类,您必须至少拥有一个实现ICollection的属性,以便第二个列表框中的ItemsSource可以填充。

public class Marken
{
  // Assuming this marke is populated.
  public ObservableCollection<int> marke { get; set; }
}