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

C# XAML绑定XML属性的数据并显示其值,c#,xaml,data-binding,rss,xmlserializer,C#,Xaml,Data Binding,Rss,Xmlserializer,我正在为WindowsPhone制作简单的RSS阅读器,它使用XML序列化程序读取XML文件并显示项目列表。我有Rss.css文件,其中我有item类(在片段下面): 我在XAML文件中绑定数据,并显示例如标题字段,如下所示: <ListView Grid.Row="1" ItemsSource="{Binding Rss.Channel.Items}"> <ListView.ItemTemplate> <DataTemplate>

我正在为WindowsPhone制作简单的RSS阅读器,它使用XML序列化程序读取XML文件并显示项目列表。我有Rss.css文件,其中我有item类(在片段下面):

我在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}"/>
<TextBlock Text="{Binding Title.Short}"/>
只需像这样绑定属性:

<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}"/>
<TextBlock Text="{Binding Title.Short}"/>

但它不起作用。我可以在XAML中“访问”它吗?或者我应该在.cs文件中更改一些内容吗


附:给出的例子是我的问题的一个较短的替代方案,因此它不一定非常符合逻辑

您正在绑定到不存在的东西-
Title
是模型中的
字符串。您应该对此进行更改,以便反序列化可以为您提供标题和属性:

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
绑定应该可以工作。

您应该能够通过使用XPath绑定来实现这一点。类似于这样:
我猜您的意思是{Binding Path=@Short},因为编译器说绑定没有“XPath”这样的属性,但它仍然不起作用。通过一些调试,您应该可以将这个问题一分为二。问题可能是XML未正确反序列化(
Short
null
),或者绑定工作不正常(
Short
有值但未绑定到UI)。是哪一个?当我运行应用程序时,在调试输出中出现以下错误:错误:BindingExpression路径错误:“String”上找不到“Short”属性。如果您绑定到
Title.Short
,并且上下文是
Item
,那么它会神奇地从哪里获取
Short
Title
是一个
string
-您的错误指出了这一点。非常感谢,它确实可以工作,但是我需要它来从这个标记提取url:
,奇怪的是,在这种情况下它不起作用。结肠可能是问题所在吗?在项目中,我有
[xmlement(media:thumbnail)]公共媒体缩略图MediaThumbnail{get;set;}
,下面我有带有url属性的MediaThumbnail类。否,
media
是名称空间前缀。在某个地方,您将有一个
xmlns:media=”http://example.com/
attribute.
xmlement
属性应该包括这一点,例如
[xmlement(“缩略图”,名称空间=”http://example.com/”)