带资源图标的WPF有线矩形ResourceDictionary绑定问题

带资源图标的WPF有线矩形ResourceDictionary绑定问题,wpf,binding,resourcedictionary,Wpf,Binding,Resourcedictionary,我正在开发一个WPF应用程序,并试图从图标资源字典中为按钮提供一个图标 我创建了一个新的ResourceDictionary合并图标ResourceDictionary,并创建了一些要使用的按钮矩形样式。 然后我发现我不能直接将图标绑定到VisualBrush,我必须创建另一个VisualBrush ResourceKey来显示图标。 我在下面列出了工作代码和不工作代码 有人知道这个解释吗?感谢您的帮助。非常感谢 绑定xaml: <Button Width="80" Height="80"

我正在开发一个WPF应用程序,并试图从图标资源字典中为按钮提供一个图标

我创建了一个新的ResourceDictionary合并图标ResourceDictionary,并创建了一些要使用的按钮矩形样式。 然后我发现我不能直接将图标绑定到VisualBrush,我必须创建另一个VisualBrush ResourceKey来显示图标。 我在下面列出了工作代码和不工作代码

有人知道这个解释吗?感谢您的帮助。非常感谢

绑定xaml:

<Button Width="80" Height="80">
    <Rectangle Style="{DynamicResource Icon14040}"></Rectangle>
</Button>

非工作风格:

<Style x:Key="Icon14040" TargetType="{x:Type Rectangle}">
    <Setter Property="Height" Value="40" />
    <Setter Property="Width" Value="40" />
    <Setter Property="Fill">
        <Setter.Value>
            <VisualBrush Visual="{StaticResource Icon1}"></VisualBrush>
        </Setter.Value>
    </Setter>
</Style>
<VisualBrush x:Key="Icon1Brush4040" Visual="{StaticResource Icon1}" />
<Style x:Key="Icon14040" TargetType="{x:Type Rectangle}">
    <Setter Property="Height" Value="40" />
    <Setter Property="Width" Value="40" />
    <Setter Property="Fill">
        <Setter.Value>
            <StaticResource ResourceKey="Icon1Brush4040" />
        </Setter.Value>
    </Setter>
</Style>

工作作风:

<Style x:Key="Icon14040" TargetType="{x:Type Rectangle}">
    <Setter Property="Height" Value="40" />
    <Setter Property="Width" Value="40" />
    <Setter Property="Fill">
        <Setter.Value>
            <VisualBrush Visual="{StaticResource Icon1}"></VisualBrush>
        </Setter.Value>
    </Setter>
</Style>
<VisualBrush x:Key="Icon1Brush4040" Visual="{StaticResource Icon1}" />
<Style x:Key="Icon14040" TargetType="{x:Type Rectangle}">
    <Setter Property="Height" Value="40" />
    <Setter Property="Width" Value="40" />
    <Setter Property="Fill">
        <Setter.Value>
            <StaticResource ResourceKey="Icon1Brush4040" />
        </Setter.Value>
    </Setter>
</Style>


奇怪的是,它们很相似。对我来说,有两个结构可以工作。在
窗口中的样式内进行测试。参考资料。
对于工作案例也可以这样写:
@AnatoliyNikolaev我认为它们是一样的,但是结果让我惊讶,并且非常困惑。