【发布时间】:2015-12-25 02:00:31
【问题描述】:
我有一个 XML 文件,其中包含:
<Unit Name="Mass" Factor="1" Display="kg"/>
<Unit Name="MassPU" Factor="0.001" Display="kg/m"/>
这些数据被读入这样的字典:
Formatter.Units = (data.Descendants("Unit").Select(x => new Unit
(
x.Attribute("Name").Value,
x.Attribute("Display").Value,
Convert.ToDouble(x.Attribute("Factor").Value)
)
) ToList()).ToDictionary(x => x.Name, x => x);
然后我有这样的 C# 代码(以及其中的其他内容):
namespace mySpace
{
public static class Formatter
{
public enum MUnits {Mass = 0, Force, .... etc };
public static Dictionary<string, Unit> Units { get; set; }
}
}
现在我需要将 XAML 文本标签绑定到 Units 元素,如下所示:
<Label
Content="{Binding Source={x:Static c:Formatter.Units[Mass].Display}}"/>
它认为Mass是一个意想不到的象征,.也是。
DataContext 没有设置为 Formatter,而是设置为 ViewModel,顺便说一句。
问题:绑定必须是什么样的? (XAML 应显示“kg”。)
【问题讨论】:
-
为什么不创建单位的 ObservableCollection?字典根本不适合绑定。
-
我会使用 ValueConverter 来获取字典元素