【发布时间】:2018-07-31 19:42:44
【问题描述】:
我有一个想要在 XAML 中填充的 ListView。我正在使用自定义 DataTemplate 使添加的每个 ListViewItem 包含一个标签和一个 TextBlock。
问题是我需要使用设置属性中的数据动态填充每个 ListViewItem 的 TextBlock 的文本,而我不知道如何创建此绑定。
现在我正在使用 XmlDataProvider 填充 ListView,但我无法(或至少无法弄清楚如何)将值绑定到 xml 数据。 (我并没有卡在使用这种数据填充方法,这正是我遇到这个问题时最初在做的事情。)
基本上我需要以下内容: 用户在文本框中输入一些数据。该数据将保存到用户设置中。发生这种情况时,ListView 中的 ListViewItem 对应的 TextBlock 会使用用户设置数据进行更新。
通常我会将 TextBlock 的文本绑定到用户设置,如下所示:
Text="{Binding Source={x:Static properties:Settings.Default},Path=User_Data_1}"
但是当 TextBlock 的文本在 DataTemplate 中定义时,我该怎么做呢?
我的 DataTemplate 和 XmlDataProvider:
<DataTemplate x:Key="listViewTemplate">
<StackPanel Orientation="Vertical">
<Label x:Name="lblName" Content="{Binding XPath=name}"/>
<TextBlock x:Name="tbValue" Text="{Binding XPath=value}"/>
</StackPanel>
</DataTemplate>
<XmlDataProvider x:Key="PagesData" XPath="Pages">
<x:XData>
<Pages xmlns="">
<page id="page01">
<name>Text file:</name>
<value></value>
<source>Pages/Page_CreateFiles1.xaml</source>
</page>
<page id="page02">
<name>Xml file:</name>
<value></value>
<source>Pages/Page_CreateFiles2.xaml</source>
</page>
<page id="page03">
<name>Memory object database:</name>
<value></value>
<source>Pages/Page_CreateFiles3.xaml</source>
</page>
<page id="page04">
<name>Output database:</name>
<value></value>
<source>Pages/Page_CreateDB.xaml</source>
</page>
</Pages>
</x:XData>
</XmlDataProvider>
我的列表视图
<ListView x:Name="lvNavigation"
ItemTemplate="{DynamicResource listViewTemplate}"
ItemsSource="{Binding Source={StaticResource PagesData}, XPath=page}"/>
【问题讨论】:
标签: wpf xaml data-binding