【发布时间】:2016-07-07 15:23:39
【问题描述】:
这个问题与我昨天提出的this question 有关,但无法找到答案。我想知道在 XAML 中是否可以在类型之间进行转换。我找到了 [this answer][2],但我无法让该语法正常工作。我希望能够向下转换为一种类型以访问它的一些属性。我更喜欢仅使用 XAML 的方法,但如果需要使用 C#,我也可以这样做。任何帮助表示赞赏。谢谢
编辑:
添加一些代码来澄清我的问题。
我的问题是当我尝试绑定到特定于子类单元类型之一的属性时,XAML 看不到它,我只是返回 0。通常,如果这是在 C# 中完成的,我只会强制转换它并访问该属性,但此时我无法在我的代码中执行此操作。绑定是在 C# 中创建的,如下所示:
dgtc.Header = Properties.Resources.MaxPressure;
dgtc.MinWidth = 25;
dgtc.Width = Properties.Settings.Default.MaxPressureColumnWidth;
dgtc.IsReadOnly = true;
dgtc.Binding = new Binding("Unit.MaxDepthRelativeToEntry")
{
Converter = new DistanceUnitsConverter()
};
其中 dgtc 是一个 DataGridTextColumn。 Unit.MaxDepthRelativeToEntry 为 0,因为它是 AUnit 子类的属性,因此 XAML 认为我正在尝试访问不存在的属性。
从第二个链接到目前为止,我已经尝试了以下一些语法:
dgtc.Binding = new Binding("AUnit.MaxDepthRelativeToEntry")
dgtc.Binding = new Binding("Unit(MyNameSpace:AUnit).MaxDepthRelativeToEntry")
dgtc.Binding = new Binding("Unit(MyNameSpace:AUnit.MaxDepthRelativeToEntry)")
并且无法使任何这些工作。我也尝试通过转换器执行此操作,但问题是,当我构建 DataGrid/设置绑定/等时,我没有可用的单元列表。所以我无法从实例中获取属性并将其返回。有谁知道我可以通过任何方式(最好是在 XAML 中)获取我绑定到的类型的子类类型的属性?
【问题讨论】:
-
创建一个 Minimal, Complete, and Verifiable 示例,说明您尝试过但失败了。
-
我不认为你可以在 xaml 中进行转换,因为它只是一个标记,在 c# 中,只要转换有效(可能通过转换器,或者后面的代码)。