繁体   English   中英

Windows Phone 8.1:显示词典中的键 <string,string> 在xaml中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM