2009-06-03 27 views
8

Canvasストレッチを可変幅で完全に水平にするにはどうすればよいですか?これは親のCanvasです。したがって、親はなく、子のみです。WPFキャンバスを水平に伸ばす

XAML出典:それは、あなたはそれが可能な幅を埋めるために取得するには、ドックパネルを使用することができ、ブレンド にhttp://resopollution.com/xaml.txt

答えて

14

UIの最上位要素としてGridを使用します。これは、コンテナを満たすために伸縮します。次に、Gridの中にHorizontalAlignment="Stretch"Canvasを入れて、あなたが望むように動作します。

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Canvas Background="Blue"/> 
</Grid> 

それは私のために働いた。キーは、トップレベルのUI要素です。 Gridは既定ですべての空き領域を満たしていますが、Canvasはコンテンツの要求と同じだけの領域を占有します。

+0

" x:Class = "属性が必要かどうか知っていますか? – resopollution

+0

<?xml version = "1.0" encoding = "utf-8"?> <キャンバスHorizo​​ntalAlignment ="ストレッチ "VerticalAlignment ="ストレッチ "> これは( – resopollution

+1

はどのようにあなたがXを必要としないので、私はkaxamlにこれを貼り付け、それは私のために動作テストしている=私のために動作しませんでした:クラス属性: <グリッド のxmlns = "HTTP? ://schemas.microsoft.com/winfx/2006/xaml/presentation " xmlns:x =" http://schemas.microsoft.com/winfx/2006/xaml "> ああ –

1

を表示します。コントロールのドッキングパネルリストの最後の項目は、残りのスペースを埋めるように自動的に引き伸ばされます。

<DockPanel> 
    <Canvas /> 
</DockPanel> 
+0

タグのためのすばやい方法はありますか? – resopollution

+0

高さと幅のプロパティを削除しようとしましたが、すべてが消えるだけです。 – resopollution

1

手動で高さや幅を設定しない限り、キャンバスは自動的にこれを行う必要があります。どのようなコントロールをキャンバスを置こうとしていますか?コードを投稿できますか?

+0

私は自分のコードを投稿しました。 Canvasは、アプリケーション全体の主要な親要素です。 – resopollution

+0

高さと幅のプロパティを削除しようとしましたが、すべてが消えるだけです。 – resopollution

4

私は、これは何を行う可能性が含むのActualWidthActualHeightプロパティにキャンバスのWidthHeightプロパティをバインドされた後、動作しない場合は、
canvas.HorizontalAlignment = HorizontalAlignment.Stretch

を試してみた推測しています窓。

+0

canvas.Horizo​​ntalAlignment = Horizo​​ntalAlignment.StretchはC#コード内で実行されますか?私はXAMLにしかアクセスできません。 また、私はウィンドウを含んでいません=(。私はバインディング要素を実行するとSilverlightアプリケーションがクラッシュします。 – resopollution

+1

少し遅れていますが、同じ問題を抱えている人のために: '' "XAMLコードでは、私の場合はうまくいきました。そして、キャンバスをすべてのキャンバスからグリッドに保存することができます(特にたくさんある場合) –

1

問題は、HeightWidthを指定していることです。これらのプロパティがなければ、コントロールはデザイナで消えるように見えるかもしれませんが、キャンバスを別のコントロールに挿入すると、コントロールが適切にサイズ調整されます。

次のバージョンのWPFは 'DesignWidth'と 'DesignHeight'プロパティを持ち、他のコントロールに挿入したときに測定結果を出さずに、指定されたサイズでコントロールを表示できます。

関連する問題