繁体   English   中英

WPF-Controltemplate子级访问usercontrol的自定义依赖项属性

[英]WPF - Controltemplate child to access usercontrol's custom dependancy properties

我有一个WPF UserControl,向其中添加了新的string依赖项属性。 我想从在其自己的XAML页面上为UserControl定义的ControlTemplate中的另一个控件(图像)访问该属性。 string将在ControlTemplate中的Image的Source属性上设置。 设置属性有效,但ControlTemplate中的控件未接收到该值。 为什么会这样呢?

这是我的代码:

public static readonly DependencyProperty ButtonImageSourceProperty = DependencyProperty.Register("ButtonImageSource", typeof(string), typeof(MyControl));

public string ButtonImageSource
        {
            get { return (string)GetValue(ButtonImageSourceProperty); }
            set { SetValue(ButtonImageSourceProperty, value); }
        }

这是XAML:

<UserControl.Resources>
        <Style TargetType="custom:MyControl">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="custom:MyControl">
                        <Grid>
                        <ContentPresenter></ContentPresenter>
                            <Image Source="{TemplateBinding ButtonImageSource}" Width="30" Height="30"></Image> <!--Image's source to be set by dependency property-->
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>

使用RelativeSource模式的TemplatedParent代替TemplateBinding,如下所示:

Source="{Binding ButtonImageSource,
                 RelativeSource={RelativeSource Mode=TemplatedParent}}"

对于两者之间的区别,您可以在这里这里阅读。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM