2012-01-19 11 views
1

自分のアプリケーションでセルフトラッキングエンティティを使用しています&私のデータはWCFサービスから取得します。私のWCFサービスクエリでは、.Include( "")を使用してクエリとエンティティの関係をロードしています。セルフトラッキングエンティティListView変更時に値が失われる

public List<IndividualDisability> GetIndividualDisabilities() 
    { 
     using (var context = new ADATrackingEntities()) 
     { 
      return context.IndividualDisabilities.OfType<IndividualDisability>().Include("ADACode").ToList(); 
     } 
    } 

次に、結果をICollectionViewに追加します。私はICollectionViewにバインドされているListViewを持っている、私のリストビュー内のいくつかの列は、私のエンティティの関係から値にバインドされています。私は編集しているエンティティオブジェクトにバインドされたリストビューの現在の項目でマスター詳細設定を持っています。

<ListView Margin="0,0,10,0" MaxHeight="400" MaxWidth="300" HorizontalAlignment="Left" AlternationCount="2" ItemsSource="{Binding Path=IndividualDisabilitiesSource}" IsSynchronizedWithCurrentItem="True" SelectedItem="{Binding Path=CurrentIndividualDisability, Mode=TwoWay}" SelectionMode="Single" ItemContainerStyle="{DynamicResource ListViewItemContainerStyle}"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Case #" Width="Auto" 
       DisplayMemberBinding="{Binding Individual.CaseNumberShort}" /> 
      <GridViewColumn Header="LName" Width="Auto" 
       DisplayMemberBinding="{Binding Individual.LastName}" /> 
      <GridViewColumn Header="FName" Width="Auto" 
       DisplayMemberBinding="{Binding Individual.FirstName}" /> 
      <GridViewColumn Header="ADA Code" Width="Auto" 
       DisplayMemberBinding="{Binding ADACode.ADACodeDesc}" /> 
     </GridView> 
    </ListView.View> 
</ListView> 

問題は私の編集部に私が選択したレコードから、値を変更するコンボボックスを使用していますし、そのセル内のブランク値に私のListViewコントロールに関連する値を変更することです。私が再び表示させるための唯一の方法は、データベースに戻ってデータを再度ロードすることです。私のコンボボックスやリストビューバインディングに何かがありますか?

<ComboBox Height="25" Width="200" ItemsSource="{Binding ADACodesSource}" 
    DisplayMemberPath="ADACodeDesc" SelectedValuePath="ADACodeID" 
    SelectedValue="{Binding Path=CurrentIndividualDisability.ADACodeID, Mode=TwoWay, 
    NotifyOnValidationError=True, ValidatesOnDataErrors=True}" /> 
+0

このコードの実行中に、出力コンソールで見れば、あなたはどんなバインディングエラーを見ていますか? –

+0

変更しようとしているプロパティに対して異なるIDを設定しているように見えます。あなたはプロパティセッターで実際のオブジェクト(ADACode)を変更することを扱っていますか? おそらく、ADACodeIdでバインドされたSelectedValue/SelectedValuePathの代わりにSelectedItemを 'ADACode'でバインドします。 同じDisplayMemberPath。 –

+0

バインディングエラーは表示されませんが、代わりにSelectedItemとバインドすると、実際には期待どおりリストビュー内の値が正しく変更されます。しかし、今はコンボボックスの値を設定していません。私はTwoWayバインディングセットも持っています。何か案は? – ccorrin

答えて

0

私はコンボボックスでそれを動作させることができなかったので、カスタムコントロールを作成するために解決しました。正しいタイプのバインディングを持つように見えるAutoComplete/ComboBoxです。すべては、このブログの記事で詳細なこのコントロールに素晴らしい作品:

http://weblogs.asp.net/dwahlin/archive/2009/07/06/creating-an-combobox-style-autocompletebox-control-in-silverlight.aspx

+0

通常のコンボボックスコントロールでこの問題が発生した場合。私はコンボボックスのプロパティでIsSyncronizedWithCurrentItem = trueを設定して修正しました。すべては今働いている。 – ccorrin