控件相对于源的 WPF 内容

WPF Content of Control relative to source

我有以下代码用于以图像作为内容的自定义 WPF 单选按钮。 图片 Built Action 设置为“Content”,Copy to Output Directory 设置为“Copy if newer”。

<!--MaterialButtonTheme-->
    <Style BasedOn="{StaticResource {x:Type ToggleButton}}"
       TargetType="{x:Type RadioButton}"
       x:Key="MaterialButtonTheme">
        <Style.Setters>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="RadioButton">
                        <Grid   VerticalAlignment="Stretch"
                                HorizontalAlignment="Stretch"
                                Background="{TemplateBinding Background}">
                            <Border>
                                <Image Source="{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}}"/>
                            </Border>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="Opacity" Value=".3"/>
            <Setter Property="BorderThickness" Value="0"/>
        </Style.Setters>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Opacity" Value=".8"/>
            </Trigger>
            <Trigger Property="IsChecked" Value="True">
                <Setter Property="Opacity" Value=".6"/>
            </Trigger>
        </Style.Triggers>
    </Style>

现在,我不想对图像资源使用硬编码变体,但以下方法不起作用。

<RadioButton
                         x:Name="RadioButtonSteelMat"
                         Height="30" Width="30"
                         Foreground="White"
                         HorizontalAlignment="Left"
                         FontSize="14"
                         Style="{StaticResource MaterialButtonTheme}"
                         Content="../EmbeddedResources/Images/steel.png"
                         IsChecked="False"
                         Margin="10,200,0,0" 
                         Checked="RadioButtonSteelMat_Checked"
                />

以下硬编码变体工作正常。有人知道我做错了什么吗?

<RadioButton
                         x:Name="RadioButtonSteelMat"
                         Height="30" Width="30"
                         Foreground="White"
                         HorizontalAlignment="Left"
                         FontSize="14"
                         Style="{StaticResource MaterialButtonTheme}"
                         Content="C:\Users\Niklas\Desktop\Studium\Master\M4\Thesis\Tool\OptioneeringTool\OptioneeringTool\B+GOpt\EmbeddedResources\Images\steel.png"
                         IsChecked="False"
                         Margin="10,200,0,0" 
                         Checked="RadioButtonSteelMat_Checked"
                />

Content="/EmbeddedResources/Images/steel.png" 应该可以工作,假设 EmbeddedResources 文件夹位于 Visual Studio 中项目文件夹的根目录,并且图像文件的 Built Action 设置为“Content ”和 Copy to Output Directory 属性 到“如果更新则复制”。

另一种选择是将 Built Action 设置为“资源”并使用 pack URI 来引用它:

pack://application:,,,/EmbeddedResources/Images/steel.png