2011-09-22 32 views
1

我有一個CustomControl(說CC),它已從ContentControl繼承,幷包含ScrollViewer其中包括ContentPresenter。當我把ListBox放入CC時,它沒有任何問題。但是,當我設置ListBoxItemsPanelTemplate它不通知CC滾動到ListBox選定的項目。更改列表框ItemsPanelTemplate讓我陷入困境?

這是什麼原因? -Thanks


UPDATE:

我會遇到上面僅如果我設置HorizontalScrollBarVisibilityVerticalScrollBarVisibilityHidden描述的問題,並同時定製ListBoxItemsPanelTemplate。 (我需要隱藏scollbars。)

我不知道是否隱藏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> 
+2

你會表現出一定的XAML嗎? –

+0

當然!但是,你的意思是代碼的哪一部分? – Mimi

+1

大衛的意思是你能提供一些減少** XAML的效果嗎? –

回答

0

你有沒有設置IsItemsHost屬性在ItemsPanelTemplate爲True面板?

E.g.如果itemspaneltemplate應該用帆布:

<ItemsPanelTemplate> 
    <Canvas IsItemsHost="True" /> 
</ItemsPanelTemplate> 

Related

+0

它沒有解決它。不管怎樣,謝謝你。 – Mimi

+0

確實值得一試,因爲這通常是人們忘記的事情。我想你需要給我們提供xaml代碼才能更好地理解問題:) – edvaldig

0

的StackPanel把它的內容具有無限的空間.. 你必須明確地限制其大小,或者將其更改爲其他面板,網格例如。

試試這個:

<ItemsPanelTemplate> 
     <Grid/> 
    </ItemsPanelTemplate> 

或者:

<ItemsPanelTemplate> 
     <StackPanel Orientation="Horizontal" Width="100" Height="100"/> 
    </ItemsPanelTemplate> 
+0

不!這已經通過將'CustomControl1'放入網格中完成了。 (查看MainWindow代碼。) – Mimi

相關問題