2017-06-29 4 views
1

私はWPF/EFで新しく、2つのコンボボックスを互いにバインドします。 entitys開始するC#選択コンボボックスをバインドする

マイコード:私のリロードサブで

private ShipperDBEntities shipper; 
    public EnterIndicator() 
    { 
     InitializeComponent(); 
     shipper = new ShipperDBEntities(); 
     ReLoad(); 
    } 

を、私は、LINQでentitysを照会し始めます。 まず、私のIndicatorComboBox、カート種(船、車、邪魔されないchaising車、もっと...タイプ..)。 2番目のComboBoxには、すべてのタイプの定義が含まれています。しかし、上記のインジケータの1つを選択すると、2番目のTypeComboBoxが適切なタイプの車を選択できます。車のタイプはデータベースで決定されます。ここ は、クエリのコードです:

DataContext = null; 
     var query = (from Fahrzeuges in shipper.Fahrzeuges 
        join typen in shipper.Fahrzeugtypens on Fahrzeuges.Fahrzeugtyp equals 
        typen.FahrzeugTyp_ID 
        where 
         Fahrzeuges.Versandunternehman.Versandunternehmen == LieferantenName 
        select new 
        { 
         Fahrzeuges.Kennzeichen, 
         Fahrzeuges.Fahrzeug_ID, 
         typen.FahrzeugTyp 
        }); 
     DataContext = query.ToList(); 


     FahrzeugTypBox.ItemsSource = (from Fahrzeugtypens in shipper.Fahrzeugtypens 
             select new 
             { 
              FahrzeugTyp_ID = Fahrzeugtypens.FahrzeugTyp_ID, 
              FahrzeugTyp = Fahrzeugtypens.FahrzeugTyp 
             }).ToList(); 


     KennzeichenBox.SelectedIndex = 0; 

私は正しいXAMLを使用して、それを解決することができますね。 ここにxamlのコードがあります(しかし、私は実際には分かりません)。

 <ComboBox Grid.Row="1" Grid.Column="1" ItemsSource="{Binding}" SelectedValuePath="Fahrzeug_ID" DisplayMemberPath="Kennzeichen" VerticalAlignment="Top" Name="KennzeichenBox" Height="25" SelectionChanged="KennzeichenBox_SelectionChanged"/> 


    <ComboBox Grid.Row="3" IsSynchronizedWithCurrentItem="True" 
       Grid.Column="1" ItemsSource="{Binding}" 
       SelectedValuePath="FahrzeugTyp_id" 
       DisplayMemberPath="FahrzeugTyp" 
       SelectedValue="{Binding SelectedItem.FahrzeugTyp,ElementName=KennzeichenBox}" 
       VerticalAlignment="Top" 

       Name="FahrzeugTypBox" Height="25"/> 

Iは=最初のコンボボックスにより選択から{バインディング} SelectedValueのを使用して溶液を試みるようになりました。

提案がありますか?ありがとう!

答えて

0

このお試しください:XAMLで、その後

 DataContext = this; 

     public List<dynamic> Fahrzeuges { get; set; } 
     public List<dynamic> Typen { get; set; } 


     Fahrzeuges = new List<dynamic>(from Fahrzeuges in shipper.Fahrzeuges 
        join typen in shipper.Fahrzeugtypens on 
        Fahrzeuges.Fahrzeugtyp equals 
        typen.FahrzeugTyp_ID 
        where Fahrzeuges.Versandunternehman.Versandunternehmen == LieferantenName 
        select new 
        { 
         Kennzeichen = Fahrzeuges.Kennzeichen, 
         Fahrzeug_ID = Fahrzeuges.Fahrzeug_ID, 
         FahrzeugTyp = typen.FahrzeugTyp 
        }); 

     Typen = new List<dynamic>(from Fahrzeugtypens in shipper.Fahrzeugtypens 
            select new 
            { 
             FahrzeugTyp_ID = Fahrzeugtypens.FahrzeugTyp_ID, 
             FahrzeugTyp = Fahrzeugtypens.FahrzeugTyp 
            }); 

を:

<ComboBox Grid.Row="1" Grid.Column="1" ItemsSource="{Binding Fahrzeuges}" 
      SelectedValuePath="Fahrzeug_ID" DisplayMemberPath="Kennzeichen" 
      VerticalAlignment="Top" Name="KennzeichenBox" Height="25" 
      SelectionChanged="KennzeichenBox_SelectionChanged"/> 


<ComboBox Grid.Row="3" Grid.Column="1" ItemsSource="{Binding Typen}" 
      SelectedValuePath="FahrzeugTyp" 
      DisplayMemberPath="FahrzeugTyp" 
      SelectedValue="{Binding ElementName=KennzeichenBox, Path=SelectedItem.FahrzeugTyp}" 
      VerticalAlignment="Top" 
      Name="FahrzeugTypBox" Height="25"/> 
+0

こんにちは、お返事に感謝を。選択結果を動的総称リストに変換する際に問題が発生しました。 – rkn53940

+0

が回答を編集しました。 –

関連する問題