2011-09-15 14 views
1

Silverlight Webアプリケーションを開発しています.3つの列に分かれている子ウィンドウで作業しています。左は常に表示されないメッセージ用で、2つ(中と右)は常に表示されます。Silverlightグリッドのサイズ変更の問題

私の質問は次のとおりです。左の列にデータを表示する必要がない場合は、右と中の列をすべて使用します。例えば、私の子ウィンドウの幅が100の場合、3つは33.333になります。左側のウィンドウが表示される必要がない場合、残りの2つは両方とも50です。

編集:子ウィンドウは、私は子ウィンドウのコンストラクタにbool値(showMessageToUser)を通過し、何をするかを決定すべきであることに基づいています。この

<controls:ChildWindow ... 
    <Grid x:Name="LayoutRoot" Margin="2"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 
     <Grid Name="msgGrid" Grid.Column = 0/> 
     <Grid Grid.Column = 1/> 
     <Grid Grid.Column = 2/> 
</controls:ChildWindow> 

のように見えます

+0

コードを一切使用しないで、最初の列でデータを表示する必要はないと判断する方法はありますか? – AnthonyWJones

+0

@HiTechMagicはコピーした過去を行い、それを変更するのを忘れてしまった...ありがとうございました:) –

+1

XAMLでも "="の前後に空白がないように標準で設定してください。私は一致する答えを更新しました。 –

答えて

1

最初の列を「自動」サイズにし、2番目の2列を幅1 *(または単に*)にします。

最初の列は内容に崩壊し(おそらく表示/非表示になります)、2番目の列は50%ずつ使用されます。

最初の列に名前コンテナ(別のグリッド?)を配置し、その可視フラグを制御します。他の2つの列はそれ自身を処理します。

<controls:ChildWindow ... 
    <Grid x:Name="LayoutRoot" Margin="2"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto" /> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="*" /> 
     </Grid.ColumnDefinitions> 
     <Grid x:Name="msgGrid1" Grid.Column=0 Width="100"/> 
     <Grid Grid.Column=1/> 
     <Grid Grid.Column=2/> 
</controls:ChildWindow> 

msGrid1の表示を制御して、必要な効果を得ます。列0(GridSplitterなど)の場合、幅のユーザーコントロールも必要な場合は、2つの機能が同時に機能しないため、コードビハインドが必要になります。

+0

面白いこと...私は自動にセットして休んだ*とそれは働いていませんでした。今それは魔法のように動作します:)ありがとう。 –

+0

ようこそ。何が正面で働くべきかを知ることは、物事が奇妙に作用するときにそれを信じない方が簡単になります。したがって、実際の原因を見つけることができます:) –

+0

実用的な解決策(私は実際に説明された仕様へのリテラル解決に向かいました)。 – AnthonyWJones

関連する問題