2016-04-07 6 views
1

私は、コードはこのようなものです..私は私のViewModelから値をバインドするように見えることはできませんPROBに直面していました。..WPF(XAML - データバインディングは - 祖先を探す)

<telerik:RadGridView 
     ... 
     DataContext = "{Binding thisViewModel}" 
     ItemSource = "{Binding item1}" 
     ... > 

    <telerik:RadGridView.Columns> 
     <telerik:GridViewDataColumn 
      .... 
      DataMemberBinding = "{Binding insideItem1}"> 

     <telerik:GridViewDataColumn.Header> 

      <Run Text = "{Binding Path = DataContext.item2, 
           RelativeSource = {RelativeSource Mode=FindAncestor, 
            AncestorType="{x:Type telerik:RadGridView"}, 
            AncestorLevel = 1}}"/> 

       ..... 

     </<telerik:GridViewDataColumn> 

その1バインドの問題はアイテム2"実行テキスト"の部分です。 item2のthisViewModelと同じように別のプロパティですアイテム1のようになります。誰でもこのことについて私に啓発することができますか?事前にありがとう:)

+0

出力ウィンドウにバインディングエラーがありますか? – Nitin

+0

いいえありません..値を設定していません。私は私のviewModel側でそれをチェックしました。プロパティは私もあまりにも値を持っています – DriLLFreAK100

答えて

0

私はこの方法でそれをバインドし、あなたがStaticResourceとしてあなたのViewModelを定義することを提案したい:

<Run Text = "{Binding Path=DataContext.item2 Source={StaticResource MyDataContext}}"/> 

はそれが役に立てば幸い!すてきな一日を!

+0

面白いアイデア。祖先バインディングを処理するうまいきれいな方法。 – Tone

+0

私はそれを 'に変更する必要があることに注意してください。 DataContext(ViewModel)はMyDataContextとして定義されているため、パスには必要ありません。 – Tone

+0

提案をありがとう、それを見てみるだろう...しかし、私は上記のバインディングが動作していない理由を理解することにもっと興味があります..誰でもそれを指摘することができれば感謝します:) – DriLLFreAK100

0

あなたにはカンマがありません。いくつかの不要な(やや濁った)引用符があります。さらに、Run要素は、私が理解しているように独自の方法で使用することはできませんが、TextBlockやFlowDocument内の段落に含める必要があります。あなたのコードの修正版を使用すると、特に実行機能の必要性を持っていない場合、それが動作するかどうか、あなただけの独自の

<TextBlock Text="{Binding Path=DataContext.item2, 
       RelativeSource={RelativeSource Mode=FindAncestor, 
        AncestorType={x:Type telerik:RadGridView}, 
        AncestorLevel=1}}"/> 

Aやや簡素代替上のTextBlockを使用することができ

<TextBlock> 
    <Run Text="{Binding Path=DataContext.item2, 
        Mode=OneWay, 
        RelativeSource={RelativeSource Mode=FindAncestor, 
         AncestorType={x:Type telerik:RadGridView}, 
         AncestorLevel=1}}"/> 
</TextBlock> 

ですあなたのレイアウトは

<TextBlock Text="{Binding Path=DataContext.item2, 
      RelativeSource={RelativeSource AncestorType={x:Type telerik:RadGridView}}}"/> 
+0

haha​​ ..コンマ...しかし、それは働いていない:/ – DriLLFreAK100

+0

私は問題が何であるか考えることができません。投稿したコードは、間違いなくTextプロパティの有効なバインディングです。私は本当にランクラスに精通していません - あなたはそれを正しく使用していると確信していますか? RunをTextBlockに変更し、それが表示されているかどうかを確認して、少なくともバインディングが機能しているかどうかを確認する必要があります。 – Tone

+0

私はそれを調べましたが、理解しているように、RunクラスはTextBlock、FlowDocumentの段落などの別の要素に含める必要があります。私は答えを更新します - 新しいものを試してみましょう。 – Tone

関連する問題