0

<ImageBrush/>元素中,有AlignmentXAlignmentY属性的值分别为 Left/Center/Right 和 Top/Center/Bottom。

我想要做的是设置我自己的值,例如,AlignmentX作为一个值或另一个枚举,比如AlignmentX="HalfCenter"whereHalfLeft等于我自己的值(在中心和左之间的中间)。例如,如果我有这个:

    <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词是否意味着我不能将此属性设置为自定义属性?

如果这不能覆盖该属性,我该如何创建自己的?我认为这是一个附加属性,它可以被称为不同的东西,比如OffsetXOffsetYan 设置ImageBrush为它的 parent 内的一个位置Shape。不过,我对 SL 文档关于我将如何做到这一点感到非常困惑(在 VB.NET 中几乎没有示例 - 但即使是 C# 也不是那么具有启发性)。

如果可能的话,我将如何开始呢?

4

1 回答 1

1

省去你的痛苦,只使用一个值转换器,即使这样也会有点棘手,因为你将不得不应用渲染转换或其他东西来对你的枚举做出反应。

您也可以编写自己的面板,这可能是一个更好的主意。

您需要面对几个不同的问题,创建附加属性,验证枚举,让枚举在设置时执行您希望它执行的操作。

您还必须了解 MeasureOverride 和 ArrangeOverride

如果你不能帮助自己......看这里

于 2010-06-08T17:53:11.723 回答