Silverlight 中的元素数据绑定

发布于 2024-09-28 20:38:28 字数 1020 浏览 0 评论 0 原文

我在 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 的名称...

任何人都可以给我一个提示,非常感谢。

I have a template column in a DataGrid:

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

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

And in the same xaml file, I have

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

The DataSource has loaded everything successfully for sure, if I put that TextBlock out side of the DataGrid, it works; but inside the DataGrid, it doesn't load even the Name of rsAllSkills....

Could anybody give me a hint, thank you so much.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伴我心暖 2024-10-05 20:38:28

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

我的猜测是,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>

Have a dummy converter and check the binding.

What I guess is, the DataTemplate inside the CellEditingTemplate would receive the parent's DataContext, ie., DataGrid's DataContext. So, to work around this you can do one thing.

1) Bind the rsAllSkills to the Tag Property of DataGridTemplateColumn.
2) Now, Bind the TextBlock's Text property with the Tag property like,

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文