[英]Windows phone 8.1 : display key from Dictionary<string,string> in xaml
以下是我的json
{"Hello":[{"CompanyName":"one","ETA":"10","Invoice":{"TF1":" 49","BF1":" 49","MD1":"2 Km","FPk1":" 12","att":"1 mins"},"tf3":"49"},{"CompanyName":"one","ETA":"10","Invoice":{"TF1":" 49","BF1":" 49","MD1":"2 Km","FPk1":" 15","att":"1 mins"},"tf3":"49"}],"ChildPresent":true}
我正在反序列化所有内容,而我的主要问题是与发票对象( "Invoice":{"TF1":" 49","BF1":" 49","MD1":"2 Km","FPk1":" 15","att":"1 mins"},"tf3":"49"}]
),其中包含一堆键和值...问题出在“发票”对象中的键每隔6个小时会发生变化。我需要在xaml中同时显示键和值
现在我正在将上面的json全部反序列化为Modal,并将发票对象数据存储到Dictionary中
RootObject j = JsonConvert.DeserializeObject<RootObject>(json);
public class Hello {
public Dictionary<string, string> Invoice { get; set; }
public string CompanyName {get;set;}
public string ETA {get;set;}
}
当我用XAML {Binding Invoice[TF1]}
编写代码时,我得到TF1的值,但我希望将TF1键显示在XAML中。
正确的语法是{Binding Path=Invoice.Key}
。 由于这行不通,因此请确保在页面顶部设置了正确的DataContext。 标头应如下所示:
<Page
...
DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
...>
这意味着XAML将在附加的代码隐藏文件中查找Dictionary(即,如果您的XAML文件是Page.xaml
,则代码隐藏文件为Page.xaml.cs
)。 如果未指定,则不知道在何处查找Invoice
。
( 注意:由于您正在开发Windows Phone 8.1,因此,如果您转到Visual Studio并为Windows Phone创建Hub应用程序模板项目,则它应演示如何从XAML绑定到Dictionary。)
Dictionary<,>
没有Key
属性。 有一个Keys
属性,但是不能使用命名值对其进行索引。
要在xaml中显示的键名
这没有意义...密钥Name
? 或从文字键的值Name
为重点?
<TextBlock Text="{Binding Path=Invoice[Name]}" />
或文字文本。
<TextBlock Text="Name" />
尝试指定Path =:
<ListView ItemsSource="{Binding Path=Invoice}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Key}"></TextBlock>
<TextBlock Text="{Binding Path=Value}"></TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.