2012-01-25 2 views
0

LoadedイベントでGetBindingExpressionメソッドを呼び出そうとしていますが、常にnullを返します。GetBindingExpressionは、Loadedイベントでnullを返します。

これは正常な動作ですか、何か問題がありますか?期待される場合は、どのイベントの後にバインディング式を使用できるようになりますか?

cb1.GetBindingExpression(LookUp.LookUpItemsSourceProperty) 
+1

コード(XAMLとそれに対応するコードが表示されていない)を表示しないと助けにならない場合があります。 – Nuffin

+0

ソースコードを提供してください –

+1

人、人! 「ソースコード」を求めないでください。質問をカバーする***コード***を常に求めてください。この場合、取得するバインディング(ウィンドウ全体ではありません!)とLoadedイベントハンドラを持つコントロールのxamlを見る必要があります。 – Will

答えて

1
:私はちょうどカスタムコントロール

public partial class LookUp : ComboBox 

public static readonly DependencyProperty LookUpItemsSourceProperty = 
          DependencyProperty.Register("LookUpItemsSource" 
          , typeof(IEnumerable) 
          , typeof(LookUp) 
          , new PropertyMetadata(OnItemsSourcePropertyChanged)); 


public IEnumerable LookUpItemsSource 
     { 
      get 
      { 
       return this.GetValue(LookUpItemsSourceProperty) as IEnumerable; 
      } 
      set 
      { 
       this.SetValue(LookUpItemsSourceProperty, value); 
      } 
     } 

を作成し、コントロールは、そのメソッドの戻り値はnullに初期化したときに

<Controls:LookUp Name="cb1" LookUpItemsSource="{x:Static Helper:DataManager.CycleLookUpData}" 

は、今私はバインディング式を取得したいXAMLでこのコントロールを使用

x:staticはキーの値を設定します。バインディング式ではありません。あなたはGetBindingExpression()メソッドを使用することはできませんXAMLで{Binding ...を使用しない場合は、使用する

{Binding CycleLookUpData, source={x:static Helper:DataManager}} 
1

を持つことになります。あなたの場合、バインディングの代わりに値を設定します。代わりにcb1.GetValue(LookUp.LookUpItemsSourceProperty)を使用する必要があります。

関連する問題