这是我的布局:
<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上的记录,它必须从数据库中重新定位值。这些值是静态的,不会改变。
答案 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的解决方案,要么耸耸肩并与之共存,希望在下一个版本中事情会有所改善(就像它们一样)。