0

次のXAMLで定義されたカスタムUserControlがあります。

<Grid HorizontalAlignment="Left" VerticalAlignment="Top">
    <Ellipse Height="100" Width="100" StrokeThickness="1" Stroke="Black" Fill="Transparent" Opacity="0.7" />
    <Ellipse Height="98" Width="98" StrokeThickness="10" Stroke="White" Fill="Transparent" Opacity="0.5" />
    <Ellipse Height="80" Width="80" StrokeThickness="1" Stroke="Black" Fill="Transparent" Opacity="0.7" />

    <Line StrokeThickness="10" Stroke="Black" X1="33" Y1="33" X2="66" Y2="50" StrokeStartLineCap="Round" StrokeEndLineCap="Round" />
    <Line StrokeThickness="10" Stroke="Black" X1="33" Y1="66" X2="66" Y2="50" StrokeStartLineCap="Round" StrokeEndLineCap="Round" />
</Grid>

ご覧のとおり、現在、固定の幅と高さで定義しています。このコントロールを別のXAMLファイルに配置するときに、この幅と高さを定義可能にします。例えば:

<Grid>
    <MyCustomControl Width="100" Height="100" />
    <MyCustomControl Width="75" Height="150" />
</Grid>

カスタムコントロールからこれらの値にバインドできることはわかっていますが、混乱しているのは、すべての計算を考慮して、小さい楕円と中央の線の位置を調整することです。

これをXAML(たとえばWidth="{Binding Width}-2")で実行できますか、それともコードで楕円と線を描画する必要がありますか?

4

1 に答える 1

2

この場合、税関を使用してシェイプバインディングを作成することをお勧めしますConverter。コンバーター内では、コードで任意の変換関数を設定でき、パラメーターを渡すこともできます。

Width={Binding Width, ElementName=controlName, Converter="...", ConverterParameter="..."}
于 2012-09-20T20:10:42.677 に答える