我正在试着让ItemsPanelTemplate在ListBox上工作。ListBox在DataTemplate中使用,我的任何隐式ListBox样式都不会覆盖默认的视觉样式。由于某种原因,我为控件指定的ItemsPanelTemplate ( WrapPanel)被忽略,取而代之的是StackPanel。
这是整个模板,我只能假设我遗漏了一些东西,导致了这一点。
<DataTemplate x:Key="GroupLargeIconsTemplate" DataType="{x:Type Core:IGroup}">
<ListBox ItemsSource="{Binding Children}" OverridesDefaultStyle="True">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel HorizontalAlignment="Left" VerticalAlignment="Top" IsItemsHost="True" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto"
Width="{Binding (FrameworkElement.ActualWidth), RelativeSource={RelativeSource AncestorType=ScrollContentPresenter}}" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<DataTemplate.Resources>
<conv:IconConverter x:Key="IconConverter"/>
</DataTemplate.Resources>
<StackPanel Margin="2" Width="100" Height="140">
<Image Source="{Binding Icon,Converter={StaticResource IconConverter},ConverterParameter=96}"/>
<TextBlock Text="{Binding Name}" TextWrapping="Wrap" TextTrimming="CharacterEllipsis" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>发布于 2009-12-02 23:01:55
我的猜测是WrapPanel中的width属性使其行为类似于Stackpanel。
发布于 2012-07-09 21:07:37
奇怪的是,控件模板不应该覆盖显式指定的值,相反,我想到了相反的情况……也就是说,除非控件模板提供了一个"IsItemsHost“设置为true的面板。则忽略该ItemsPanel。这可能就是你的案子了。
https://stackoverflow.com/questions/1832719
复制相似问题