在XAML或代码中绑定GrivdViewColumn的宽度属性?

时间:2011-12-21 10:02:22

标签: wpf mvvm

我想将GrivdViewColumn的Width属性与我的ViewModel绑定。让我们说ViewModel的一个实例是Window的Datacontext。 ViewModel有一个名为IdWidth,LastNameWidth,FirstNameWidth的属性。并且该窗口在stackPanel中包含以下给定的ListVeiw。一切都很好,但不知何故GridViewColumn的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 个答案:

答案 0 :(得分:3)

我的评论中概述了接受的答案是错误的,看着你的路径,你似乎期望DataContext成为项目,这是不可行的(有多个项目要开始,应该选择哪个? )。

列的DataContextDataContext的{​​{1}}。

此示例将生成一个包含标题ListView的列:

Lorem Ipsum

您也可能对this article on debugging databindings感兴趣。

答案 1 :(得分:2)

编辑:对于DataBinding,FrameworkElement不是必需,对于以下对MSDN引文的错误解释感到抱歉。 见评论和@H.B.是answer

GridViewColumn不会从FrameworkElement继承,这是数据绑定所必需的。

请参阅MSDN:

<击>   

支持数据绑定和动态资源引用:[...],但能够解析存储为Expression的成员值(编程结构) FrameworkElement实现了数据绑定和动态资源的基础