0

<ImageBrush/>要素には、値がそれぞれ Left/Center/Right および Top/Center/Bottom のAlignmentXおよび属性があります。AlignmentY

私がやりたいことは、たとえば、AlignmentX値として、または自分の値と等しいAlignmentX="HalfCenter"場所のような別の列挙として、自分の値を設定することHalfLeftです (中央と左の中間)。たとえば、これがある場合:

    <Rectangle Canvas.Left="0" Stroke="LimeGreen" StrokeThickness="16" Canvas.Top="0" 
               Width="400" Height="400" >
        <Rectangle.Fill>
            <ImageBrush ImageSource="newone.jpg" 
                       Stretch="None" AlignmentX="HalfLeft" AlignmentY="Top"  />
        </Rectangle.Fill>
    </Rectangle>

これが依存関係プロパティなのか、添付プロパティなのか、それ以外なのかはわかりません (それらの作成方法はまだわかりません)。ヘルプファイルでは、TileBrush.AlignmentXPropertyフィールドに次のように記載されていますPublic Shared ReadOnly AlignmentXProperty As DependencyProperty。ここでのReadOnlyという言葉は、このプロパティをカスタム プロパティに設定できないという意味ですか?

これがそのプロパティのオーバーライドできない場合、どうすれば独自のプロパティを作成できますか? これは添付プロパティだと思います。たとえば、 をその親内の場所に設定するなどOffsetX、別のものと呼ぶことができます。ただし、これをどのように行うかについてSLのドキュメントで非常に混乱しています(VB.NETの例はほとんどありませんが、C#の例でさえ、それほど明らかではありません)。OffsetYImageBrushShape

可能であれば、どうすればこれを開始できますか?

4

1 に答える 1

1

手間を省いて値コンバーターを使用するだけでも、enum に反応するために rendertransform などを適用する必要があるため、少し注意が必要です。

おそらくより良いアイデアである独自のパネルを作成することもできます。

ここでは、添付プロパティの作成、列挙型の検証、列挙型が設定されているときに実行したいことを行うという、いくつかの異なる問題に直面する必要があります。

MeasureOverride と ArrangeOverride についても学ぶ必要があります。

どうにもならない場合は...こちらをご覧ください

于 2010-06-08T17:53:11.723 に答える