我正在为Windows Phone制作简单的RSS阅读器,它使用XML序列化器读取XML文件并显示项目列表。我有Rss.css文件,其中我有项目类(下面的片段):
public class Item
{
[XmlElement("title")]
public string Title { get; set; }
[XmlElement("link")]
public string Link { get; set; }
}
我在XAML文件中绑定数据,并像这样显示例如title字段:
<ListView Grid.Row="1" ItemsSource="{Binding Rss.Channel.Items}">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Title}"/>
等。它工作得很好。现在,假设在XML标题中有一个属性,例如short="true"。如何绑定和显示此属性?
我尝试在Item类下创建另一个类:
public class Title
{
[XmlAttribute("short")]
public string Short { get; set; }
}
并简单地像这样绑定属性:
<TextBlock Text="{Binding Title.Short}"/>
但它不起作用。我可以在XAML中"达到"它,或者我应该在。cs文件中改变一些东西吗?
p。给出的例子是我的问题的一个较短的替代方案,因此它不一定是非常合乎逻辑的。
您绑定到不存在的东西- Title
是您的模型中的string
。您应该更改这一点,以便反序列化可以同时为您提供标题和属性:
public class Item
{
[XmlElement("title")]
public Title Title { get; set; }
[XmlElement("link")]
public string Link { get; set; }
}
public class Title
{
[XmlAttribute("short")]
public string Short { get; set; }
[XmlText]
public string Value { get; set; }
}
那么您当前的Title
绑定更改为Title.Value
,您的Title.Short
绑定应该工作。