2011-12-21 7 views
0

GrivdViewColumnのWidthプロパティをViewModelにバインドしたいとします。 ViewModelのインスタンスがWindowのDatacontextであるとします。 ViewModelにはIdWidth、LastNameWidth、FirstNameWidthというプロパティがあります。そのWindowには、stackPanelに次のListVeiwが含まれています。すべてが問題ありませんが、GridViewColumnのWidthプロパティは何とかバインドされていません。コードが動作することを確認した上で投稿してください。XAMLまたはコードでGrivdViewColumnのWidthプロパティをバインドしますか?

<ListView Name="PatientListView" 
      ItemsSource="{Binding Patients}" 
      SelectionMode="Single"> 
    <ListView.View> 
    <GridView> 
     <GridView.Columns> 
     <GridViewColumn Header="Patient-Id" 
         Width="{Binding IdWidth, Mode=TwoWay}" 
         DisplayMemberBinding="{Binding PatientId}"/> 

     <GridViewColumn Header="Last Name" 
         Width="{Binding LastNameWidth, Mode=TwoWay}" 
         DisplayMemberBinding="{Binding LastName}"/> 

     <GridViewColumn Header="Last Name" 
         Width="{Binding FirstNameWidth, Mode=TwoWay}" 
         DisplayMemberBinding="{Binding FirstName}" /> 
     </GridView.Columns> 
    </GridView> 
    </ListView.View> 
</ListView> 

答えて

2

編集:FrameworkElementでではありません下記のMSDNからの引用のこの間違った解釈のため申し訳ありませんが、データバインディングのためのを必要としていました。 コメントと@H.Bを参照してください。のanswer

GridViewColumnは、データバインディングに必要な FrameworkElementから継承しません。あなたが働くことができないアイテムであると DataContextを期待しているように見えるあなたのパスを見て、私のコメントに概説されているよう

Support for data binding and dynamic resource references: [...], but the ability to resolve a member value that is stored as an Expression (the programming construct that underlies both data binding and dynamic resources) is implemented by FrameworkElement

+0

ありがとうStephan。ああ、私はそれについても考えなかった。 Uは私の時間を救った。 – Saghar

+0

ようこそ。私はちょうど数週間前に 'DataGridColumn'とまったく同じ問題を抱えていました;) –

+0

これは間違っています。データバインディングのために 'DependencyObject'から継承する必要があるだけで、ヘッダーをバインドしようとするとうまくいきます。バインディングパスまたはDataContextがちょうどオフであると思います。 –

3

受け入れ答えは間違っている(開始する複数の項目があります

はMSDNを参照しますどの選択すべきか?)。

列のDataContextは、ListViewDataContextです。

<ListView> 
    <ListView.DataContext> 
     <Label Content="Lorem Ipsum"/> 
    </ListView.DataContext> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Header="{Binding Content}"/> 
      </GridView> 
    </ListView.View> 
</ListView> 

また、あなたがthis article on debugging databindingsに興味があるかもしれない:

この例では、ヘッダーLorem Ipsumと列になります。

関連する問題