将枚举值添加到Silverlight属性/属性

时间:2010-06-07 16:04:11

标签: wpf silverlight dependency-properties attached-properties

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

我想要做的是将自己的值设置为,例如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 字是否意味着我无法将此属性设置为自定义属性?

如果这不能覆盖该属性,我该如何创建自己的属性?我认为这是一个附加属性,它可以被称为不同的东西,例如OffsetXOffsetYImageBrush设置为其父Shape内的位置。我对SL文档如何做到这一点感到非常困惑(尽管在VB.NET中几乎没有例子 - 但即使是C#也不是那么透露)。

如果有可能,我将如何开始这个?

1 个答案:

答案 0 :(得分:1)

让自己避免痛苦,只需使用一个值转换器即使这样也会有点棘手,因为你将不得不应用rendertransform或其他东西来对你的枚举做出反应。

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

这里有一些不同的问题需要面对,创建附加属性,验证枚举,让enum按照你想要的方式设置它。

您还必须了解MeasureOverride和ArrangeOverride

如果你无法自助...... Look Here