【发布时间】:2010-04-08 03:59:29
【问题描述】:
我有一个包含 CheckBox 和 ListBox 的 DataTemplate。当 CheckBox 被选中时,我想更改 ListBox 上的 ItemTemplate 属性以更改每个项目的外观。
现在,它看起来像这样:
<DataTemplate DataType={x:Type MyViewModel}>
<DockPanel>
<CheckBox DockPanel.Dock="Bottom"
Content="Show Details"
HorizontalAlignment="Right"
IsChecked="{Binding ShowDetails}"
Margin="0 5 10 5" />
<ListBox ItemsSource="{Binding Items}"
ItemTemplate="{StaticResource SimpleItemTemplate}"
Margin="10 0 10 5">
<ListBox.Triggers>
<DataTrigger Binding="{Binding ShowDetails}" Value="True">
<Setter Property="ItemTemplate"
Value="{StaticResource DetailedItemTemplate}" />
</DataTrigger>
</ListBox.Triggers>
</ListBox>
</DockPanel>
</DataTemplate>
但是,当我尝试编译时,我收到以下错误消息:
值“ItemTemplate”无法分配给属性“Property”。无效的 PropertyDescriptor 值。
和
在“ContentPresenter”类型上找不到静态成员“ItemTemplateProperty”。
我对 WPF 还是很陌生,所以也许有一些我不太了解的地方?
【问题讨论】:
-
更新:我意识到我可以只使用触发器而不是 DataTrigger,并将 SourceName 设置为 CheckBox,但无论如何,都会发生同样的错误。