0

<ImageBrush/>元素中,分别有值为Left/Center/Right和Top/Center/Bottom的AlignmentXAlignmentY属性。将枚举值添加到Silverlight属性/属性

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

如果这不能覆盖该属性,我该如何创建自己的?我认为这是一个附加属性,它可以被称为不同的东西,例如OffsetXOffsetY,它将ImageBrush设置为它的父Shape中的某个位置。虽然我几乎没有在VB.NET中的例子 - 但是即使是C#中的例子也不是那么明显),但我对SL的文档却很困惑。

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

回答

1

保存自己的痛苦,只是使用一个值转换器,即使这会有点棘手,因为你将不得不应用rendertransform或什么东西来对你的枚举做出反应。

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

这里有几个不同的问题需要面对,创建附加属性,验证枚举,使枚举在设置时执行你想要的操作。

你也将不得不了解的MeasureOverride和ArrangeOverride

如果你不能帮助自己... Look Here

+0

在'RenderTransform'伟大的意见,甚至都没有想到这一点。但那正是我所需要的。 – 2010-06-08 21:42:28