我下面有一些简单的XAML,我的问题是,为什么文本不显示在列表框中?我得到的只是两条可选线!
<Window x:Class="DataTemplateEditor.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.DataContext>
<XmlDataProvider Source="datatemplate.xml" XPath="Tables/Table" />
</Grid.DataContext>
<DockPanel HorizontalAlignment="Stretch" Name="dockPanel1" VerticalAlignment="Stretch">
<ListBox Name="listBox1" Width="150" DockPanel.Dock="Left" ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True">
<ListBox.Resources>
<DataTemplate x:Key="MyDataTemplate">
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding XPath=@Name}" />
</StackPanel>
</DataTemplate>
</ListBox.Resources>
</ListBox>
<ListView Name="listBox2" DockPanel.Dock="Right" />
</DockPanel>
</Grid>
<?xml version="1.0" encoding="utf-8" ?>
<Tables>
<Table Name="People">
<Field Name="id" Type="Number" PrimaryKey="true" Indexed="true" AllowNull="false"/>
<Field Name="FirstName" Type="Number" PrimaryKey="true" Indexed="true" AllowNull="false"/>
</Table>
<Table Name="Purchases">
<Field Name="id" Type="Number" PrimaryKey="true" Indexed="true" AllowNull="false"/>
</Table>
</Tables>
答案 0 :(得分:0)
您在Resources
中声明了一个命名数据模板,但您永远不会使用它。这就像在方法中初始化变量,但从不使用它的值:它没有做任何事情。
要执行您想要的操作,请将模板指定给the ItemTemplate
property:
<ListBox ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding XPath=@Name}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
但我认为StackPanel
在那里是不必要的。更重要的是,整个模板是不必要的,您只需使用DisplyMemberPath
:
<ListBox ItemsSource="{Binding}" DisplayMemberPath="@Name" />