我正在开发一个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属性组成。
答案 0 :(得分:2)
你应该把你的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>