【问题标题】:Binding Child to parent将孩子绑定到父母
【发布时间】:2016-08-30 11:43:13
【问题描述】:

我是 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>

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

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    您可以使用RelativeSource={RelativeSource TemplatedParent} 绑定到ButtonContent。在这个例子中,我使用了一个简单的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>
    

    用法:

    <Button Content="C:\Whatever.png"/>
    

    <Button Content="pack://application:,,,/Whatever.png"/>
    

    结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2020-01-27
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      相关资源
      最近更新 更多