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 ComboBoxes 的数据源。到目前为止,我发现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 回答