2011-06-30 30 views
1

如何從後面的代碼訪問DataFormEditTemplate中的控件?Silverlight:按名稱訪問DataForm EditTemplate中的元素

以下EditTemplate適用:

<toolkit:DataForm ItemsSource="{Binding ElementName=someDomainDataSource, Path=Data, Mode=TwoWay}"> 
    <toolkit:DataForm.EditTemplate> 
     <DataTemplate> 
      <StackPanel> 
      .... 
      <sdk:DatePicker DisplayDate="{Binding DueDate, Mode=TwoWay}}" 
          x:Name="dpCustomMaterialDueDate"/> 
     .... 
      </StackPanel> 
     </DataTemplate> 
     </toolkit:DataForm.EditTemplate> 
</toolkit:DataForm> 

是否可以使用變量名dpCustomMaterialDueDate代碼隱藏文件訪問DatePicker?智能感知似乎無法找到它。

還試圖訪問它在DataFormContentLoaded事件,但沒有運氣,即

dataformPrintOrders.ContentLoaded += (sender, args) => 
      { 
       DatePicker d = (DatePicker) 
        dataformPrintOrders.FindNameInContent("dpCustomMaterialDuedate"); 
       if (d != null) 
       { 
        d.DisplayDateStart = DateTime.Now.AddMonths(-1); 
        d.DisplayDateEnd = DateTime.Now.AddMonths(12); 
       } 
      }; 

變量d總是空。

回答

1

如果您無法訪問由它來控制在代號behid,你可以使用的FindControl函數從該 thread

+0

鏈接問題中的FindChild方法起作用。一定要在'EditTemplate'初始化後調用它,例如,我重載了'DataForm'的'ContentLoaded',即'DataForm.ContentLoaded + =(sender,args)=> {FindChild (... ); }' – Ryan

0

你也可以附加一個Loaded事件處理程序,並投了sender參數DatePicker

+0

附加一個加載的事件處理程序到什麼 - 有問題的DatePicker? – Ryan