2

这是我的布局:

<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 上的记录时,它都必须重新加载数据库中的值。这些值是静态的,不会改变。

4

2 回答 2

3

Deborah Kurata 的 Silverlight 和 RIA:将 ComboBox 添加到 DataForm帖子中描述了如何通过使用静态资源来克服这个问题。我认为Dan Wahlin 的 Creating a Silverlight DataContext Proxy to Simplify Data Binding in Nested Controls帖子更详细地描述了底层问题。

于 2009-12-13T22:32:31.627 回答
0

由于已经引用的 Dan Wahlin 文章中详述的 SL1、2、3 的设计限制,您必须像这样设置 DDS。在 SL4 中,基础问题在很大程度上得到了解决,很多这种废话都烟消云散了。与此同时,您要么使用 Wahlin 的解决方案,要么耸耸肩并接受它,希望在下一个版本中情况会有所改善(就像他们所做的那样)。

于 2010-01-07T04:07:25.120 回答