Windows Phone 8.1:在xaml中显示字典<字符串,字符串>中的键

本文关键字:字符串 Phone 字典 显示 xaml Windows | 更新日期: 2023-09-27 17:57:10

下面是我的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 所有内容反序列化为模态,并将发票对象数据存储到字典中

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 中。

Windows Phone 8.1:在xaml中显示字典<字符串,字符串>中的键

正确的语法是 {Binding Path=Invoice.Key} 。由于这不起作用,请确保您在主页顶部设置了正确的数据上下文。标题应如下所示:

<Page
    ...
    DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
    ...>

这意味着 XAML 将在它附加到的代码隐藏文件中查找字典(即,如果 XAML 文件Page.xaml,则代码隐藏文件Page.xaml.cs)。如果您不指定此内容,则它不知道在哪里查找Invoice


注意:由于您正在为 Windows Phone 8.1 进行开发,因此如果您转到 Visual Studio 并为 Windows Phone 创建 Hub App 模板项目,它应该演示如何从 XAML 绑定到字典。

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>