我是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属性,该图像将被设置为第一个图像的图像源? 如果有人有其他想法来实现它,请分享。
答案 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>
结果: