我在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的名称....
有人能给我一个提示,非常感谢你。
答案 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>