2011-05-11 12 views
1

タブコントロールと重なるコントロールを含む親グリッドに関する問題があります。WPF:コントロールとグリッド列幅の重複の問題

重複するコントロールに従って、列のサイズを変更するには(タブコントロール内の)子グリッドが必要です。 具体的には、(ウィンドウのサイズ変更などにより)オーバーラップコントロールをサイズ変更すると、タブコントロール内の子グリッドは、タブコントロールグリッド内の子コントロールがタブコントロールと重なるコントロールで重ならないように列のサイズを変更する必要があります。

私は心からここに誰かがこの問題の解決策を知っている願って、私は日のためにそれを戦ってきた:)事前に

感謝を!

敬具、 必須

編集:以下のコメントへの返信です。絶対に

- 私は私が持っている必要があります考え出したが、私は/私は、コードを持っていなかった仕事で午前たことを見てハンディ。しかし、私はXAMLの同様の例を書くことができます。

<Grid Name="parentGrid" > 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="1*" /> 
    <ColumnDefinition Width="1*" /> 
    <ColumnDefinition Width="1*" /> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="1*" /> 
    <RowDefinition Height="1*" /> 
    <RowDefinition Height="1*" /> 
    </Grid.RowDefinitions> 

    <TabControl Name="tabCtrl" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="1" Grid.RowSpan="2"> 
    <TabItem Name="tabItem1"> 
     <Grid Name="tabCtrlGrid"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="1*" /> <!-- This is the column I want to resize according to the overlapping image control below --> 
      <ColumnDefinition Width="1*" /> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="1*" /> 
      <RowDefinition Height="1*" /> 
     </Grid.RowDefinitions> 

     <Button Name="someChildControl" Grid.Column="1" Grid.Row="0" /> 
     </Grid> 
    </TabItem> 
    </TabControl> 

    <Image Name="overlappingImg" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="0" Grid.RowSpan="2" /> <!-- whenever the screen/window is resized, the parentGrid resizes, and thus resizing this overlapping image. --> 
</Grid> 

何が起こるために必要なのはtabCtrlGridの列0は、画像の重なり領域の幅に合わせてその幅を変更する必要があるということです。そうすることによって、someChildControlは画像のサイズ変更方法に関係なく、画像と重なることはありません。

それは、もう少し明確に願っ:)

+0

XAMLコードを投稿してください。 – CodeNaked

+0

またはそれ以上:サイズ変更の仕組みを示す写真をいくつか見せてください。 –

+0

私がテストして見ることができる限り、Buttonは、2つの等しい幅の列を使用するタブの半分を使用しているので、ボタンが中間の列に決して交差しないように、画像によって重複することはありません。私は何が欠けていますか? –

答えて

1

どのようにこれが見えますか?

<Grid Name="parentGrid" Background="LightGray"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="100" /> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="100" /> 
     </Grid.ColumnDefinitions> 
     <Rectangle HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Fill="Aqua"/> 
     <TextBlock Text="Tab controller" HorizontalAlignment="Stretch" VerticalAlignment="Bottom"/> 
     <Rectangle Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Fill="Aqua"/> 
     <TextBlock Text="Up down nav" Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> 
     <Grid Grid.ColumnSpan="2"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto" /> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 
      <Rectangle HorizontalAlignment="Left" VerticalAlignment="Top" Width="130" Height="160" Fill="BlanchedAlmond"/> 
      <TextBlock Text="CoverArt" HorizontalAlignment="Left" VerticalAlignment="Top" Width="130" Height="160"/> 
      <Rectangle Grid.Column="1" Fill="LightGray" /> 
      <TextBlock Text="Tab content" Grid.Column="1" /> 
     </Grid> 
    </Grid> 
+0

@ Phil。非常に面白いですが、あなたは正しいですが、クリップされませんが、TabControlの内側と子コントロールの右側に配置されます。私はそれがTabControlのクリッピング領域の左に置くことが可能かどうかはわかりません:( – Requiem

+0

@Requiem:私はあなたの要件を誤解しているようです。この例の四角形はどこにありますか? –

+0

@Phil:私は何ですかやってみると、ムービーやビデオゲームなどのデータベースアプリケーションです。カバーアートはアプリケーションウィンドウの左上隅に配置され、タブコントロールにはムービー/ゲーム/その他の情報が含まれています。カバーアートはタブコントロールと少し重なっているはずですが、タブコントロールはその内容を調整して、重なり合うイメージがタブの情報を隠さないようにする必要があります。親グリッドでは、情報はTabItem内のグリッドにあります – Requiem

関連する問題