我正在开发一个C++Metro风格的应用程序,在ListView的ItemTemplate(或其项)内部的绑定有问题。如果我在我的Page.xaml中做得对,它就会起作用。(简化)代码为:
<ListView x:Name="m_listParts" ItemsSource="{Binding PartsList}>
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Width="60" Height="60">
<Grid>
<TextBlock Text="{Binding Part}"/>
</Grid>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
但是,我希望在我的resourceDictionary中有ItemTemplate定义。但我不知道如何使装订工作。它似乎再也找不到绑定属性了。
以下是我的(简化)尝试(由于ItemsPanel正在工作,我想我已经正确加载了字典本身):
<Style x:Key="PartsListListView" TargetType="ListView">
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal" Width="60" Height="60">
<Grid>
<TextBlock Text="{Binding Part}"/>
</Grid>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
PartsList是一个包含PartViewItem对象的可观察向量,该对象由一个Part属性组成。
您应该将Xaml写为
<ListView
ItemsPanel="{StaticResource MyItemsPanel}"
ItemTemplate="{StaticResource MyItemTemplate}" .../>
你在哪里有资源
<UserControl.Resources>
<DataTemplate x:Key="MyItemTemplate" DataType="{x:Type MyItemType}">
<StackPanel ....
</DataTemplate>
<ItemsPanelTemplate x:Key="MyItemsPanel">
<StackPanel...
</ItemsPanelTemplate>
</UserControl.Resources>