【问题标题】:WPF: One-way binding on entire DataGridWPF:对整个 DataGrid 进行单向绑定
【发布时间】:2010-03-02 19:00:45
【问题描述】:

有没有办法将整个 DataGrid 标记为单向绑定?

【问题讨论】:

  • 当然是让它以完全非标准的方式运行!这是良好可用性的关键,对吧? ;)
  • 因为我绑定了一组只读属性,而且我已经厌倦了写“, Mode=OneWay”。
  • 也许你可以覆盖默认的依赖属性元数据?
  • 这听起来很有趣,但我使用的是 INotifyPropertyChanges 而不是依赖属性。

标签: wpf wpftoolkit


【解决方案1】:

您可以创建一个新类,例如继承绑定的 OneWayExtension。

 public class OneWayExtension : Binding
{
    public OneWayExtension()
        : base()
    {
        Initialize();
    }

    public OneWayExtension(string path)
        : base(path)
    {
        Initialize();
    }

    private void Initialize()
    {
        this.Source = YourSourceOrMakeThisAParameter;
        this.Mode = BindingMode.OneWay;
    }
}

然后您可以通过以下方式调用它

{local:OneWay PathOfData}

【讨论】:

  • 有趣。看起来我可以用这个做很多很酷的事情。
  • 我发现它是设置用户和应用程序设置的好方法。一个“问题”是 XAML 编辑器会抱怨它找不到带有一个参数的构造函数。 MS 已将其解决为不会修复。您可以通过将类移动到解决方案中的单独项目来“解决”它,这对于设置不起作用,但对于您的情况可能。或者,如果您不介意警告(显然仍然可以编译),请忽略它;)
  • 这是一种显而易见的答案,我可能会为这个问题担心六个月却永远找不到。
【解决方案2】:

我知道这已经得到解答,但您不能将 DataGrid 的 ItemsSource 属性上的绑定 Mode 设置为 OneWay 吗?

【讨论】:

  • 你会怎么做? ItemsSource 属性是 IEnumerable 并且没有 Mode 属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
  • 2015-07-02
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
相关资源
最近更新 更多