绑定XML属性的数据并显示其值



我正在为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绑定应该工作。

相关内容

  • 没有找到相关文章

最新更新