2009-05-25 20 views
17

私はXAML-blindを得ています。私は恐れています。私はMS Surfaceアプリケーションを開発しており、ScatterViewItem(エンドユーザがサイズ変更できるコンテナ)内に楕円があります。私は、楕円を円(幅==高さ)に保ち、可能な限り大きくしたいと考えています(SVIの幅/高さの最小値は、楕円の幅/高さの両方のプロパティに対して取る必要があります)。XAMLでは、楕円を円にする方法を教えてください。

XAMLのみのソリューション(プロパティトリガなどを使用)が推奨されます。

いつものようにあなたの助けに感謝します。

答えて

15

簡単なViewboxはトリックですか?例えば。

<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    HorizontalAlignment="Center" 
    VerticalAlignment="Center"> 
    <Canvas Width="100" Height="100"> 
     <Ellipse Fill="Red" Width="100" Height="100" /> 
    </Canvas> 
</Viewbox> 

ViewboxViewboxのエリアを埋めるために、その内容を拡張し、デフォルトで比例スケーリングを行います。指定された水平方向と垂直方向のアラインメントは、(比例スケーリングのために)フルサイズに伸ばせないときには、Ellipseの中央を維持します。

+1

Briljant! Briljant(少なくとも15文字必要です) –

5
<Ellipse x:Name="anEllipse" Width={Binding Path=ActualHeight ElementName=anEllipse} /> 

相対バインディングも同様に名前を付けないと、おそらくこれを忘れてしまう可能性があります。

+2

境界ボックスの高さが幅よりも大きければどうなりますか?その場合、Height = ActualWidthが必要です。 –

+0

この場合、コードを記述する必要があります。つまり、アスペクト比を維持する欲張りのサイジングをしたいとします(ムービープレイヤーと同じように、どの軸を基準にしてどちら側のサイズを変更するか大きいです) –

+0

それは私が考えたものです。あまりにも悪いですが、問題はありません。ありがとう –

28

私は

あなたが簡単に使用することができます

(私はできれば、私は彼の答えにコメントしたいが、私はできません)数分前にこの質問つまずいと@Paulベッツよりもはるかに良い解決策を見つけた<Ellipse Stretch="Uniform" />円を得る。

出典:http://forums.silverlight.net/t/160615.aspx

+2

これはこれまでのところ最良の解決策です。 – flyingfisch

関連する問題