2016-05-10 7 views
0

をスクロールしたとき、私は現在、ContentControlが含まれていTabControl(チャートのリストにバインドされた)(チャートを示すこと)である(カスタムクラス用)DataTemplateを持ってListBoxを持っています。ContentControlに

ListBoxをスクロールすると、TabControlのタブが正しく画面から消えます。しかし、TabControl内のContentControlのチャートは、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を設定しようとしたが、それだけでリストボックスとContentControlsが混在していないようです。どんな助けもありがとう。

答えて

0

残念ながら、これは答えではありませんが、将来的には多くの人が役に立ちますが、特定のケースでは<ContentControl Content="{Binding Chart}" .../>のバインディングはWinFormHost内でしか表示できないチャートを指しています。

WinFormsとWPFは異なるレンダリング技術であるため、WinFormsのUI要素は常にWPF上にオーバーレイされ、WinFormグ​​ラフがListBoxの外に出て「画面外」にスクロールされるはずです。

詳しくは、this stackoverflow questionまたはthis MSDN postを参照してください。私の研究では、.NET 4.5リリースでこの問題が修正されたと言う人もいましたが、合併症ではなく、リリースから削除しなければならなかったようです(link参照)。

0

ListBoxにHorizontalContentAlignment="Stretch"を追加してください。 私はこれまで同様の問題を抱えていましたが、これで問題は解決しました。

0

(vishakh369が推奨)以外にも、ClipToBounds="True"を試すことができます。違いは何なのか分かりませんが、多分それを試してどちらが良いかを見てみることができます。

関連する問題