2011-12-21 30 views
0

我想用我的ViewModel綁定GrivdViewColumn的寬度屬性。可以說,ViewModel的一個實例是窗口的Datacontext。 ViewModel具有名爲IdWidth,LastNameWidth,FirstNameWidth的屬性。並且該窗口在stackPanel中包含以下給定的ListVeiw。一切都很好,但不知何故GridViewColumn的寬度屬性沒有綁定。請確保它的工作後請發佈代碼。在XAML或代碼中綁定GrivdViewColumn的寬度屬性?

<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。 's answer

GridViewColumn不從 FrameworkElement繼承,這是數據綁定所必需的。

請參閱MSDN:

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

謝謝斯蒂芬。哦,我什至沒有想到這一點。你節省了我的時間。 – Saghar 2011-12-21 11:10:49

+0

不客氣。我在幾個星期前剛剛和'DataGridColumn'發生了同樣的問題;) – 2011-12-21 11:21:47

+0

這是不正確的。你只需要從'DependencyObject'繼承數據綁定,你可以嘗試綁定這個頭,它工作得很好,我的猜測是綁定路徑或DataContext剛剛關閉。 – 2011-12-21 11:52:40

3

接受的答案是錯誤的,因爲在我的評論概括,看着你的路,你似乎期望的DataContext是項目,這不能工作(有多個項目開始與,應該選擇?)。

列中的DataContextListViewDataContext

這個例子將導致與頭Lorem Ipsum列:

<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

相關問題