У меня есть CustomControl
(скажем, CC
), который был унаследован от ContentControl
и содержит ScrollViewer
, который включает ContentPresenter
.Когда я ставлю ListBox
в CC
, он работает без проблем.Но когда я устанавливаю ItemsPanelTemplate
из ListBox
, он не уведомляет CC
о прокрутке до ListBox
выбранного элемента.
В чем причина?-Спасибо
ОБНОВЛЕНИЕ:
Я столкнусь с проблемой, описанной выше, только если я установлю HorizontalScrollBarVisibility
или VerticalScrollBarVisibility
на Hidden
и настроюItemsPanelTemplate
из ListBox
одновременно.(Мне нужно скрыть полосы прокрутки.)
Интересно, если скрытие Scrollbars
не позволяет ScrollViewer
содержимому уведомлять об этом для отображения выбранного элемента, почему эта проблема не возникает, когда я не меняю элементыпанель ???
Generic.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>
MainWindow.xaml:
<Window x:Class="MyNamespace1.MainWindow"
...
xmlns:proj="clr-namespace:MyNamespace0;assembly=...">
<Grid>
<proj:CustomControl1 x:Name="CC">
<ListBox>
<ListBox.ItemsPanel> «
<ItemsPanelTemplate> «
<StackPanel Orientation="Horizontal"/> « PROBLEM
</ItemsPanelTemplate> «
</ListBox.ItemsPanel> «
<!--content goes here-->
</ListBox>
</proj:CustomControl1>
</Grid>
</Window>