2016-05-10 2 views
0

настоящего времени у меня ListBox, который имеет DataTemplate (для пользовательского класса), который является TabControl (связанный со списком диаграмм), что содержит ContentControl (показать карту).ContentControl внутри ListBox происходит вне ListBox при прокрутке

Когда я просматриваю ListBox, вкладки TabControl корректно гаснут. Однако диаграмма ContentControl в TabControl выходит из ListBox и над другими элементами.

Пример кода:

<ListBox x:Name="ListBox" ItemsSource="{Binding ChartItemsList}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Visible"> 
<ListBox.Resources> 
    <DataTemplate DataType="{x:Type m:ChartItemsWrapper}"> 
     <StackPanel Orientation="Horizontal"> 
      <shared:PixelSnapper> 
       <TabControl Background="White" BorderBrush="DarkGray" ItemsSource="{Binding Items}" Margin="3,0" Padding="0" TabStripPlacement="Right"> 
        <TabControl.ContentTemplate> 
         <DataTemplate> 
          <DockPanel LastChildFill="True"> 
           <Border BorderBrush="DarkGray" BorderThickness="0,1,0,0"> 
            <Grid Background="White"> 
             <Stuff> 
             <Grid Margin="0,25,0,0"> 
              <ContentControl Content="{Binding Chart}" Visibility="Collapsed" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" x:Name="mainChart"/> 
             </Grid> 
            </Grid> 
           </Border> 
          </DockPanel> 
         <DataTemplate.Triggers ... /> 
         </DataTemplate> 
        </TabControl.ContentTemplate> 
        <TabControl.ItemTemplate ... /> 
        <TabControl.ItemContainerStyle ... /> 
       </TabControl> 
      </shared:PixelSnapper> 
     </StackPanel> 
    </DataTemplate> 
</ListBox.Resources> 
<ListBox.ItemsPanel> 
    <ItemsPanelTemplate> 
     <WrapPanel FlowDirection="LeftToRight" IsItemsHost="True" Orientation="Horizontal"></WrapPanel> 
    </ItemsPanelTemplate> 
</ListBox.ItemsPanel> 

Я попытался установить ZIndexes, изменение привязки, но это только кажется, что ListBoxes и ContentControls не смешиваются. Любая помощь будет оценена по достоинству.

ответ

0

Извините, это не будет ответом, который большинство людей в будущем найдет полезным, но в моем конкретном случае привязка <ContentControl Content="{Binding Chart}" .../> указывала на диаграмму, которая может отображаться только в WinFormHost.

Поскольку WinForms и WPF - разные технологии визуализации, а элементы интерфейса WinForms всегда будут накладываться на WPF, что приводит к тому, что мои графики WinForm выходят за пределы ListBox, когда они должны были прокручиваться «за кадром».

Подробнее об этом см. В this stackoverflow question или this MSDN post. В моих исследованиях некоторые люди говорили, что эта проблема была исправлена ​​в выпуске .NET 4.5, но кажется, что это было не из-за осложнений и пришлось отказаться от выпуска (см. link).

0

Добавить HorizontalContentAlignment="Stretch" в список ListBox. У меня была аналогичная проблема раньше, и это исправило мою проблему.

0

За исключением HorizontalContentAlignment="Stretch", предлагаемых vishakh369, вы также можете попробовать ClipToBounds="True". Не знаете, в чем отличия, возможно, вы можете попробовать, чтобы посмотреть, какой из них лучше.

Смежные вопросы