Wpf VisualBrush颜色在选定时不更改

Wpf VisualBrush颜色在选定时不更改,wpf,Wpf,我在WPF中创建了一个VisualBrush,为一个角色提供波浪形下划线 <VisualBrush x:Key="WavyBrush"> <VisualBrush.Visual> <Path Data="M 0,2 L 2,0 4,2 6,0 8,2 10,0 12,2" Stroke="Black" /> </VisualBrush.Visual> </VisualBrush> 除了将结果放入Data

我在WPF中创建了一个VisualBrush,为一个角色提供波浪形下划线

<VisualBrush x:Key="WavyBrush">
    <VisualBrush.Visual>
        <Path Data="M 0,2 L 2,0 4,2 6,0 8,2 10,0 12,2" Stroke="Black" />
    </VisualBrush.Visual>
</VisualBrush>
除了将结果放入DataGrid并选择行之外,它工作得非常好。如果未选中的行具有白色背景的黑色文本,并且选择该行会将文本变为白色,而背景为蓝色或其他颜色,则my VisualBrush with Stroke=black将保持黑色,不会变为白色,看起来很混乱

有没有办法让画笔表现得像文本的颜色?

选中行时,可以使用DataTrigger更改画笔的颜色。该代码使用ListBox,但您可以轻松地将其调整为使用DataGrid


如果其他人感兴趣,DrawingBrush的作用类似于文本,并在选中时更改颜色

    <DrawingBrush x:Key="TextBoxWavyBrush">
        <DrawingBrush.Drawing>
            <DrawingGroup>
                <DrawingGroup.Children>
                    <GeometryDrawing Geometry="M 0,2 L 2,0 4,2 6,0 8,2 10,0 12,2">
                        <GeometryDrawing.Pen>
                            <Pen Thickness="1" StartLineCap="Round" EndLineCap="Round" LineJoin="Round" Brush="{Binding RelativeSource={RelativeSource AncestorType=TextBox, Mode=FindAncestor}, Path=Foreground}"/>
                        </GeometryDrawing.Pen>
                    </GeometryDrawing>
                </DrawingGroup.Children>
            </DrawingGroup>
        </DrawingBrush.Drawing>
    </DrawingBrush>

以这种方式使用VisualBrush不是它的设计目的。如果你想将路径数据转换成画笔,你可以使用DrawingBrush,然后你可以将路径数据用于PathGeometry。注释完美地解决了我的问题。你想把它作为一个答案吗?很高兴知道你可以很容易地解决这个问题时使用DrawingBrush代替。我只是建议使用它,因为它更方便,但是使用VisualBrush应该不是问题,您仍然可以使用它使其工作。我不太确定它是如何接近你的问题,我的意思是你几乎必须自己解决它,所以最好不要添加答案,无论如何,谢谢。那很好,我猜框架处理DrawingBrush的方式不同,它会在选择绘图时自动将绘图的颜色反转为高亮;另一方面,VisualBrush相对原始。
    <DrawingBrush x:Key="TextBoxWavyBrush">
        <DrawingBrush.Drawing>
            <DrawingGroup>
                <DrawingGroup.Children>
                    <GeometryDrawing Geometry="M 0,2 L 2,0 4,2 6,0 8,2 10,0 12,2">
                        <GeometryDrawing.Pen>
                            <Pen Thickness="1" StartLineCap="Round" EndLineCap="Round" LineJoin="Round" Brush="{Binding RelativeSource={RelativeSource AncestorType=TextBox, Mode=FindAncestor}, Path=Foreground}"/>
                        </GeometryDrawing.Pen>
                    </GeometryDrawing>
                </DrawingGroup.Children>
            </DrawingGroup>
        </DrawingBrush.Drawing>
    </DrawingBrush>