我有一个CustomControl
(说CC
),它是从ContentControl
继承而来的,其中包含ScrollViewer
,其中包含ContentPresenter
。当我将ListBox
放入CC
时,它的工作没有任何问题。但是,当我设置ItemsPanelTemplate
的{{1}}时,它不会通知ListBox
滚动到CC
所选项目。
它是什么原因? -Thanks
更新
只有当我将ListBox
或HorizontalScrollBarVisibility
设置为VerticalScrollBarVisibility
并同时自定义Hidden
ItemsPanelTemplate
时,我才会遇到上述问题。 (我需要隐藏scollbars。)
我想知道隐藏ListBox
是否阻止Scrollbars
内容通知它将所选项目置于视图中,为什么当我不更改项目面板时不会发生此问题???
Generic.xaml:
ScrollViewer
MainWindow.xaml:
<ResourceDictionary ...>
<Style TargetType="{x:Type local:CustomControl1}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomControl1}">
<Border ...>
<ScrollViewer ...
CanContentScroll="True"
HorizontalScrollBarVisibility="Hidden" « PROBLEM
VerticalScrollBarVisibility="Hidden"> «
<ContentPresenter Content="{TemplateBinding Content}"/>
</ScrollViewer>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
答案 0 :(得分:0)
您是否已将ItemsPanelTemplate中Panel的IsItemsHost属性设置为True?
E.g。如果itemspaneltemplate应使用Canvas:
<ItemsPanelTemplate>
<Canvas IsItemsHost="True" />
</ItemsPanelTemplate>
答案 1 :(得分:0)
StackPanel将其内容视为拥有无限空间。 您必须明确地限制其大小,或将其更改为其他面板,例如Grid。
试试这个:
<ItemsPanelTemplate>
<Grid/>
</ItemsPanelTemplate>
或者:
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" Width="100" Height="100"/>
</ItemsPanelTemplate>