2010-10-25 50 views
0

我有一个DataGrid模板列:元数据绑定在Silverlight

<sdk:DataGridTemplateColumn.CellEditingTemplate> 
          <DataTemplate> 
           <StackPanel Orientation="Horizontal" VerticalAlignment="Center" > 

            <TextBlock Text="{Binding Name,ElementName=rsAllSkills}"/> 
           </StackPanel> 
          </DataTemplate> 
</sdk:DataGridTemplateColumn.CellEditingTemplate> 

而且在同一个XAML文件,我有

<riaControls:DomainDataSource QueryName="GetSkillsQuery" AutoLoad="True" x:Name="rsAllSkills"> 
      <riaControls:DomainDataSource.DomainContext> 
       <domain:XXXX context/> 
      </riaControls:DomainDataSource.DomainContext> 
</riaControls:DomainDataSource> 

的数据源已经为确保成功加载的一切,如果我将该TextBlock放在DataGrid的外面,它就可以工作;但在DataGrid中,它甚至不会加载rsAllSkills的名称....

有人能给我一个提示,非常感谢。

+1

rsAllskills是不是在模板栏目范围的名称。范围不会超出'DataTemplate'的范围。您可能需要在某处添加DomainContext到DataGrid的DataContext中。 – Stephan 2010-10-25 16:06:46

回答

0

有一个虚拟转换器并检查绑定。

我猜想,CellEditingTemplate中的DataTemplate会接收父级的DataContext,即DataGrid的DataContext。所以,要解决这个问题,你可以做一件事。

1)将rsAllSkills绑定到DataGridTemplateColumn的标签属性。
2)现在,绑定的TextBlock的Text属性与标签属性一样,

<sdk:DataGridTemplateColumn Tag="{Binding Name,ElementName=rsAllSkills}"> 
    <sdk:DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
       <StackPanel Orientation="Horizontal" VerticalAlignment="Center" >  
        <TextBlock Text="{Binding Tag}"/> 
       </StackPanel>   
     </DataTemplate> 
    </sdk:DataGridTemplateColumn.CellEditingTemplate> 
</sdk:DataGridTemplateColumn> 
+0

我通过将Ria数据源控件定义为一个静态资源来解决了这个问题......但是如果它能正常工作,我会给你的解决方案一个解决方案并标记为解决方案。谢谢! – Frank 2010-10-25 22:19:31

+0

......它没有标签属性... – Frank 2010-10-25 23:21:50

+0

@ user299230我想,静态资源是最好的方法。 :) – 2010-10-26 05:29:08