c# - 是否可以使用 C#7 绑定(bind)到 WPF 中的 ValueTuple 字段

标签 c# wpf xaml valuetuple

如果我有一个 viewmodel 属性

public (string Mdf, string MdfPath) MachineDefinition { get; set; }

我尝试在 XAML/WPF 中绑定(bind)它

<Label Content="{Binding Path=MachineDefinition.Item2}" />

<Label  Content="{Binding Path=MachineDefinition.MdfPath}" />

同样的错误

enter image description here

我看到 ValueTuple 字段实际上是字段而不是属性。这是问题所在吗?

最佳答案

令人困惑的是,对于旧式元组(C#7 之前),所有项目都是属性

https://msdn.microsoft.com/en-us/library/dd386940(v=vs.110).aspx

因此可绑定(bind)。对于 ValueTuple,它们是字段

https://github.com/dotnet/runtime/blob/5ee73c3452cae931d6be99e8f6b1cd47d22d69e8/src/libraries/System.Private.CoreLib/src/System/ValueTuple.cs#L269

不可绑定(bind)。

如果你用谷歌搜索 “WPF 元组绑定(bind)”,你会得到大量误报,因为旧式元组是可绑定(bind)的,但新式元组不是。

关于c# - 是否可以使用 C#7 绑定(bind)到 WPF 中的 ValueTuple 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43208852/

相关文章:

c# - C#中自定义rank函数的优化

c# - 使用 LINQ 选择最频繁的值

c# - 如何查找文件夹中的所有可编写脚本的对象,然后从其中加载变量?

WPF:有没有办法在 MultiValueConverter 的 ConvertBack 方法中获取原始值?

c# - 如果Binding为NULL,则Datagrid中的WPF ComboBox会引发错误

wpf - 如何避免默认情况下在wpf Listbox中选择第一项?

c# - 使用单链接实体列表的 Linq 中的自定义 OrderBy

wpf - 将桌面桥 UWP 应用与 Win32 应用正确打包

c# - 如何加速 ListBox 渲染和 ListCollectionView 过滤?

c# - 如何在 xaml 中绑定(bind) tabitem 的 isselected 属性