使用DomainDataSource填充DataForm中的ComboBox

时间:2009-12-13 13:29:49

标签: silverlight silverlight-4.0 wcf-ria-services

这是我的布局:

<StackPanel>
    <!-- Defining my DDS here wont allow my ComboBox inside the DataTemplate bind to the loaded items -->
    <DomainDataSource x:Name="ddsValues" Query="MyQuery" DomainContext="{Binding DC}" />
    <DataForm>
        <DataForm.EditTemplate>
            <DataTemplate>
                <StackPanel>
                    <!-- Defining my DDS here works fine -->
                    <DomainDataSource x:Name="ddsValues" Query="MyQuery" DomainContext="{Binding DC}" />
                    <ComboBox ItemsSource="{Binding Data, ElementName=ddsValues}" />
                </StackPanel>
            </DataTemplate>
        </DataForm.EditTemplate>
    </DataForm>
</StackPanel>

有谁能告诉我为什么我必须这样设置我的DomainDataSource?为什么它必须存在于DataTemplate中?有没有解决的办法?从技术上讲,这意味着我每次都要更改DataForm上的记录,它必须从数据库中重新定位值。这些值是静态的,不会改变。

2 个答案:

答案 0 :(得分:3)

Deborah Kurata's Silverlight and RIA: Adding a ComboBox to a DataForm帖子介绍了如何通过使用静态资源来解决这个问题。我想Dan Wahlin's Creating a Silverlight DataContext Proxy to Simplify Data Binding in Nested Controls发帖 更详细地描述了潜在的问题。

答案 1 :(得分:0)

由于已经引用的Dan Wahlin文章中详述的SL1,2,3的设计限制,您必须设置这样的DDS。在SL4中,基础问题在很大程度上得到了解决,并且很多废话都在蒸发。在此期间,您要么使用Wahlin的解决方案,要么耸耸肩并与之共存,希望在下一个版本中事情会有所改善(就像它们一样)。