将Child绑定到parent

时间:2016-08-30 11:43:14

标签: c# wpf xaml

我是WPF的新手,想知道如何在WPF中将子节点绑定到父节点。为了更清楚:我有一个像

这样的用户控件
<Button x:Name="JobViewer" Margin="5" Background="Transparent" Content="{TemplateBinding Content }" ToolTip="{Binding Name, RelativeSource={RelativeSource Self}}">
    <Button.ContentTemplate>
        <DataTemplate>
            <Canvas Background="Black">
                <Border CornerRadius="8" Height="100" Width="100" Canvas.Left="-52" Canvas.Top="-50"
                BorderThickness="0" BorderBrush="Black">
                    <Border.Effect>
                        <DropShadowEffect BlurRadius="3" Opacity=".6" ShadowDepth="2" />
                    </Border.Effect>
                    <Image Source="{Binding}" />
                </Border>
                <Border x:Name="Update" CornerRadius="20" Width="35" Height="38" Canvas.Left="26" Canvas.Top="-65" Visibility="{Binding ElementName=mainWindow, Path=JobViewerUpdateVisibility}"BorderBrush="White" BorderThickness="2" RenderTransformOrigin="1.346,-0.919">
                    <Border.Effect>
                        <DropShadowEffect BlurRadius="3" Opacity=".6" ShadowDepth="2" />
                    </Border.Effect>
                    <Image Source="{StaticResource StateCompletedIcon}"></Image>
                </Border>
            </Canvas>
        </DataTemplate>
    </Button.ContentTemplate>
</Button>

现在在按钮的内容中我想使用模板Binding,以便我可以在XAML窗口中使用此用户控件并设置Button的content属性,该图像将被设置为第一个图像的图像源? 如果有人有其他想法来实现它,请分享。

1 个答案:

答案 0 :(得分:2)

您可以使用Button绑定到Content的{​​{1}}。在此示例中,我使用简单的RelativeSource={RelativeSource TemplatedParent}代替Style

Button

用法:

UserControl

<Style TargetType="Button">
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <Canvas Background="Black">
                    <Border CornerRadius="8" Height="100" Width="100" Canvas.Left="-52" Canvas.Top="-50" BorderThickness="0" BorderBrush="Black">
                        <Border.Effect>
                            <DropShadowEffect BlurRadius="3" Opacity=".6" ShadowDepth="2" />
                        </Border.Effect>
                        <Image Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content}"/>
                    </Border>
                    <Border x:Name="Update" CornerRadius="20" Width="35" Height="38" Canvas.Left="26" Canvas.Top="-65" BorderBrush="White" BorderThickness="2" RenderTransformOrigin="1.346,-0.919">
                        <Border.Effect>
                            <DropShadowEffect BlurRadius="3" Opacity=".6" ShadowDepth="2" />
                        </Border.Effect>
                        <Image Source="{StaticResource StateCompletedIcon}"></Image>
                    </Border>
                </Canvas>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

结果:

More on ISO CPP.