2011-06-30 4 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にアクセスすることは可能ですか? Intellisenseはそれを見つけることができないようです。

DataFormさん ContentLoadedイベントでそれにアクセスしようとしましたが、運、すなわち

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は常にnullではありません。

答えて

1

あなたはbehidコードでの名前でコントロールにアクセスすることができない場合は、あなたがこの thread

+0

リンクされた質問の 'FindChild'メソッドが機能します。例えば ​​'DataForm.ContentLoaded + =(sender、args)=> {FindChild ()のように' EditTemplate'が初期化された後、必ず 'DataForm'の' ContentLoaded'をオーバーロードしました。 ); } ' – Ryan

0

からにFindControl関数を使用することができますまた、Loadedイベントハンドラを添付し、DatePicker

senderパラメータをキャストすることができます
+0

Loadedイベントハンドラを問題のDatePickerにアタッチしますか? – Ryan

関連する問題