0

在我的 WPF 应用程序中,我有一个带有依赖对象的自定义控件

public static readonly DependencyProperty SomeFieldProperty =
            DependencyProperty.Register("SomeField", typeof(double), typeof(MyControl), new PropertyMetadata((double)0, OnPropChanged));

public double SomeField
{
    get { return (double)GetValue(SomeFieldProperty ); }
    set { SetValue(SomeFieldProperty , value); }
}

从我的 XAML 中,我试图绑定到 SomeField,如下所示,但它不起作用: 更新:

<UserControl.Template>
    <ControlTemplate TargetType="ContentControl">
        <WrapPannel >
            <abc:MyControl SomeField="{Binding SomeValue, Mode=TwoWay}" />
        </WrapPannel>
    </ControlTemplate>
</UserControl.Template>

尝试了 StackOverflow 中类似问题中建议的不同解决方案,但都没有奏效。也许我的案例是一个特定的案例,因为我试图从模板中绑定?

4

1 回答 1

0

看起来这不是绑定问题。实际上 UserControl 的 Template 属性被 InitializeComponent() 覆盖。像这样的东西会起作用:

<UserControl x:Class="WPF.MyUserControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:WPF"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800">
    <WrapPannel>
        <abc:MyControl SomeField="{Binding SomeValue, Mode=TwoWay}" />
    </WrapPannel>
</UserControl>

实际上,用户控件将在不需要模板时使用。否则使用控件、ContentControls 或 ItemsControls。

于 2020-03-30T13:26:08.930 回答