2011-12-21 31 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

相关问题