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