0

ドメイン サービスを介してコンボックスをエンティティ モデルにバインドしたいと考えています。

私のエンティティモデル: COUNTRIES (ID, NAME) TABLE_TEST (PK_FIELD, FIELD2, COUNTRY_ID)

エンティティ モデルとドメイン サービスを作成しました。

私の Xaml:

    <riaControls:DomainDataSource AutoLoad="True" d:DesignData="{d:DesignInstance my:COUNTRIES, CreateList=true}" Height="0" Name="COUNTRIESDomainDataSource" QueryName="GetCOUNTRIESQuery" Width="0">
        <riaControls:DomainDataSource.DomainContext>
            <my:DomainService1 />
        </riaControls:DomainDataSource.DomainContext>
    </riaControls:DomainDataSource>

    <riaControls:DomainDataSource AutoLoad="True" d:DesignData="{d:DesignInstance my:TABLE_TEST, CreateList=true}" Height="0" Name="TABLE_TESTDomainDataSource" QueryName="GetTABLE_TESTQuery" Width="0">
        <riaControls:DomainDataSource.DomainContext>
            <my:DomainService1 />
        </riaControls:DomainDataSource.DomainContext>
    </riaControls:DomainDataSource>

    <ComboBox Name="COUNTRIESComboBox"
              DataContext="{Binding ElementName=COUNTRIESDomainDataSource, Path=Data}" ItemsSource="{Binding}"
              DisplayMemberPath="ID"
              SelectedValuePath="NAME"
      SelectedValue="{Binding ElementName=TABLE_TESTDomainDataSource, Path=COUNTRY_ID}">
    </ComboBox>

コンボボックスには正しい値 (すべての国) が読み込まれますが、TABLE_TEST に制限されていないように見えます。TABLE_TEST のレジスタを変更しても、コンボの値が変わりません。

私が間違っていることは何ですか?私は多くの例を見ましたが、ドメイン データ ソースとエンティティ モデルを使用する同じシナリオはありません。

私はSilverlight 5で作業しています

ありがとう

4

1 に答える 1

0

DomainDataSource は、Silverlight ComboBox のデータソースとしては非常に適していません。これまでのところ、Kyle McClennan の [MSFT] ComboBoxDataSourceが、あなたが説明したユース ケースで最も信頼できることがわかりました。実際、彼は次のようにアドバイスしました。

1) DomainDataSource を使用して ComboBoxes を設定しないでください

これは思い切った、または過剰な反応だと思うかもしれませんが、私は推奨事項に固執します. 他の場所で見られる単純なサンプルにもかかわらず、ComboBox を操作するときは DDS を避ける方がよいと思います。DDS は、より複雑な ComboBox シナリオには対応していません。

特に、ファイナル属性でコンボボックスを非同期としてマークする必要があります。

<ComboBox Name="COUNTRIESComboBox"
          DataContext="{Binding ElementName=COUNTRIESDomainDataSource, Path=Data}" ItemsSource="{Binding}"
          DisplayMemberPath="ID"
          SelectedValuePath="NAME"
          SelectedValue="{Binding ElementName=TABLE_TESTDomainDataSource, Path=COUNTRY_ID}"
          ex:ComboBox.Mode="Async">
</ComboBox>
于 2012-05-22T05:29:17.723 に答える