2010-10-25 63 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