0

所以我再一次来这里是为了解决我自己无法解决的问题,所以我的问题是每次加载按钮样式时我都会得到一个 xamlparse execption,在样式内部我有一个应该得到的 <rectangle>用户从我的 MVVM 上的查询中定义的一种颜色。到目前为止没有问题,问题是试图将该颜色值赋予矩形的 LinearGradientBrush 内的 grandientstop。我使用的 xaml 代码:

<Rectangle x:Name="rectangle" Fill="{Binding Path=StrColor, Converter={StaticResource FadingBrushConverter}, RelativeSource={RelativeSource AncestorType={x:Type Rectangle}}}" HorizontalAlignment="Right" Height="70" Margin="0,0,0,0" RadiusY="5" RadiusX="5" VerticalAlignment="Bottom" Width="70">
<Rectangle.Effect>
     <DropShadowEffect ShadowDepth="1" BlurRadius="8"/>
</Rectangle.Effect>
</Rectangle>

“StrColor”是一个颜色属性。

在我的 MVVM 上,我有这个转换器:

 Public Class FadingBrushConverter
        Implements IValueConverter

    Public Function Convert(value As Object, targetType As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
        ' TODO: Do some type-checking
        Dim brush = New LinearGradientBrush()
        Dim color = DirectCast(value, Color)
        Dim Bcolor As System.Windows.Media.Color
        Bcolor.R = 0
        Bcolor.G = 0
        Bcolor.B = 0

        brush.StartPoint = New Point(0.5, 0)
        brush.EndPoint = New Point(0.5, 1.27)
        brush.GradientStops.Add(New GradientStop(color, 0))
        brush.GradientStops.Add(New GradientStop(Bcolor, 1))

        Return brush

    End Function

    Public Function ConvertBack(value As Object, targetType As System.Type, parameter As Object, culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
        Throw New NotSupportedException()
    End Function
End Class

我真的不知道我在这里做错了什么,我一直在网上寻找,但到目前为止我没有解决这个问题的运气!

我也使用过 DynamicResource 但没有成功!

谢谢你的帮助!

4

1 回答 1

0

我认为问题在于绑定。Rectangle 的“Fill”属性绑定到其父 Rectangle 的 strColor 属性(带有"RelativeSource FindAncestor"参数)。我认为假设一个矩形放置在另一个矩形中是不现实的。即使是这种情况,内置的 Rectangle 元素也没有strColor属性。如果您想从 ViewModel 中获取颜色,您应该尝试以下方式:

{Binding Path=StrColor, Converter={StaticResource FadingBrushConverter}"

当然,这是假设 DataContext 设置正确。

于 2012-07-11T13:57:24.683 回答