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

XAML Binding data of an XML attribute and displaying its value

我正在为 Windows Phone 制作简单的 RSS reader,它使用 XML 序列化程序读取 XML 文件并显示项目列表。我有 Rss.css 文件,除此之外我还有项目 class(片段下方):

public class Item
{
    [XmlElement("title")]
    public string Title { get; set; }

    [XmlElement("link")]
    public string Link { get; set; }
}

我正在 XAML 文件中绑定数据并显示,例如像这样的标题字段:

<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 标题中有一个属性,例如短="true"。 如何绑定和显示该属性?

我试图在项目 class 下创建另一个 class:

public class Title
{
    [XmlAttribute("short")]
    public string Short { get; set; }

}

并像这样简单地绑定属性:

<TextBlock Text="{Binding Title.Short}"/>

但它不起作用。我可以 "reach" 它以某种方式 XAML 还是应该更改 .cs 文件中的某些内容?

PS。给定的示例是我的问题的较短替代方案,因此不一定非常合乎逻辑。

您正在绑定不存在的东西 - 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 绑定应该可以工作。