0

だからもう一度ここに来て、問題を解決することはできません。私の問題は、ボタンスタイルが読み込まれるたびに xamlparse execption を取得することです。 MVVM のクエリからユーザーが定義した 1 つの色。これまでのところ問題はありませんでした。問題は、長方形の 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」は Color プロパティです。

私の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"引数で) バインドされます。長方形が別の長方形に配置されていると仮定するのは現実的ではないと思います。strColorどういうわけかそうであっても、組み込みの Rectangle 要素にはプロパティがありません。ViewModel から色を取得する場合は、次のようなものを試してください。

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

もちろん、これは DataContext が正しく設定されていることを前提としています。

于 2012-07-11T13:57:24.683 に答える