2016-10-13 3 views
1

私はグリッドを持つUserControlを持っていますし、コードの背後にある四角形の列を生成しています。 UserControlには、四角形をバインドするために必要ないくつかの依存プロパティがあります。私はもともと次のマークアップとXAMLでこれをやった:プログラム的なWPFバインディングは失敗します

<Rectangle Fill="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=MeterBarColor}" 
        Grid.Row="0" 
        Margin="2,2,2,0" /> 

この結合が働いて、私はこのような背景にある私のコードでバインディングを作成しようとしましたので、しかし、私は動的に長方形の柱を構築する必要があります:

Dim oBinding As New Binding("{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=MeterBarColor}") 
oRectangle.SetBinding(Rectangle.FillProperty, oBinding) 

私がアプリケーションを実行すると、プロパティが見つからないとの各バインディング試行でエラーが発生します。

うまくいけば、誰かが私がこれを解決するのに役立つことができ、 シド

+0

は[こちら](http://stackoverflow.com/a/19794715/4838058)を見てください。 – Funk

答えて

0

Binding constructor you useの引数はパス、ない{Binding ...}式です。したがって、New Binding("MeterBarColor")に電話し、RelativeSourceプロパティを設定する必要があります。

それとも、パラメータなしのコンストラクタとobject initializersを使用することができます。

Dim oBinding As New Binding() { 
    .RelativeSource = New RelativeSource(RelativeSourceMode.FindAncestor, 
             GetType(UserControl), 1), 
    .Path = "MeterBarColor" 
} 
oRectangle.SetBinding(Rectangle.FillProperty, oBinding) 
+0

多くのおかげで、私は私のバインディングパラメータのエラーを認識し、あなたのアドバイスに従って、私のコントロールは正しくバインドされます。私はあなたに時間を割いていただきありがとうございます。 – Sid

+0

@Sid:ようこそ。あなたの質問はもう "答えられない"ように見えるように、あなたの隣のチェックマークを使って自分の答えを "受け入れられた"答え(http://stackoverflow.com/help/accepted-answer)としてマークすることができます。 – Heinzi

関連する問題