【问题标题】:Programmatically bind property to GridViewColumn.Width以编程方式将属性绑定到 GridViewColumn.Width
【发布时间】:2011-03-17 20:36:33
【问题描述】:

我有一个 WPF MVVM 应用程序,其中包含一个包含 GridView 的 ListView。
我正在使用帮助类创建 GridViewColumn,它运行良好。

我的问题:我想双向绑定宽度,以便读取宽度的更改。

现在创建 GridViewColumn 的代码如下所示:

private static GridViewColumn CreateColumn(GridView gridView, object columnSource)
{
  GridViewColumn column = new GridViewColumn();
  String headerTextMember = GetHeaderTextMember(gridView);
  String displayMemberMember = GetDisplayMemberMember(gridView);
  String widthMember = GetWidthMember(gridView);
  // set header
  column.Header = GetPropertyValue(columnSource, headerTextMember);

  // set display binding
  String propertyName = GetPropertyValue(columnSource, displayMemberMember) as String;
  column.DisplayMemberBinding = new Binding(propertyName);

  // bind with - but how?
  //Binding widthBinding = new Binding(widthMember);
  //widthBinding.Source = columnSource;
  //widthBinding.Mode = BindingMode.TwoWay;
  //gridView.SetBinding(GridViewColumn.WidthProperty, widthBinding); <- gridView got no SetBinding :(
  }
  return column;
}

有人给我一些指导,我可以如何绑定宽度?

【问题讨论】:

    标签: c# wpf binding properties


    【解决方案1】:

    看看这个:BindingOperations.SetBinding

    这个方法创建一个新的实例 一个 BindingExpressionBase 和关联 具有给定依赖项的实例 给定对象的属性。这 方法是附加绑定的方法 到任意 DependencyObject 不能暴露自己的 SetBinding 方法。

    BindingOperations.SetBinding(column, GridViewColumn.WidthProperty, widthBinding);
    

    【讨论】:

    • GridView不包含SetBinding方法,这个要到哪里找呢?
    • @Sam:是的!由于 GridViewColumn 类(不是 GridView)没有 SetBinding 方法,因此必须以这种方式进行绑定。检查我的代码编辑。
    • 哦,BindingOperations 是一个静态类——我一直在寻找一些从 BindingOperations 派生的类。谢谢!!
    猜你喜欢
    • 2012-11-13
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多