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 中。
正确的语法是 {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>