Silverlight中的元素数据绑定

时间:2010-10-25 06:24:10

标签: silverlight data-binding element

我在DataGrid中有一个模板列:

 <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>

DataSource已成功加载所有内容,如果我将TextBlock放在DataGrid的一侧,它可以正常工作;但是在DataGrid中,它甚至不会加载rsAllSkills的名称....

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

1 个答案:

答案 0 :(得分:0)

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

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

1)将rsAllSkills绑定到DataGridTemplateColumn的Tag属性。
2)现在,将TextBlock的Text属性与Tag属性绑定,如

<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>