使用xaml定义用户控件和绑定数据的内容

使用xaml定义用户控件和绑定数据的内容,xaml,user-controls,contentcontrol,Xaml,User Controls,Contentcontrol,我正在尝试创建一个用户控件,该控件具有一个contentcontrol,该控件将其内容绑定到依赖性对象。代码如下 Xaml 我遇到的问题是,当我尝试使用xaml将内容定义为textblock,然后将text属性绑定到应用程序中的字符串时,当字符串更改时,它无法更新: 我的申请代码如下 Xaml 任何关于我可能遗漏了什么或做错了什么的建议都将不胜感激 谢谢 [编辑] 此后,我将Content Dependency属性更改为NotifyContent,因为我收到一条警告,指出它正在将内容重写为Use

我正在尝试创建一个用户控件,该控件具有一个contentcontrol,该控件将其内容绑定到依赖性对象。代码如下

Xaml

我遇到的问题是,当我尝试使用xaml将内容定义为textblock,然后将text属性绑定到应用程序中的字符串时,当字符串更改时,它无法更新:

我的申请代码如下

Xaml

任何关于我可能遗漏了什么或做错了什么的建议都将不胜感激

谢谢

[编辑]


此后,我将Content Dependency属性更改为NotifyContent,因为我收到一条警告,指出它正在将内容重写为UserControl,但这仍然没有解决问题,因此我发现这是因为我在textblock中使用了elementname

如果我将usercontrol的DataContext设置为元素并绑定到propertiesit,它就会工作

见下文:

<ctrl:NotifyBar DataContext="{Binding ElementName=MainWindow}"  DockPanel.Dock="Top" Background="White" HorizontalAlignment="Stretch" >
    <ctrl:NotifyBar.Content>
        <TextBlock Height="30" Text="{Binding Path=NotifyMessage, Mode=TwoWay}" HorizontalAlignment="Stretch" />
    </ctrl:NotifyBar.Content>
</ctrl:NotifyBar>

public object Content
{
    get { return (object)GetValue(ContentProperty); }
    set { SetValue(ContentProperty, value); }
}

// Using a DependencyProperty as the backing store for Content.  This enables animation, styling, binding, etc...
public static readonly DependencyProperty ContentProperty =
    DependencyProperty.Register("Content", typeof(object), typeof(NotifyBar));
<ctrl:NotifyBar DockPanel.Dock="Top" Background="White" HorizontalAlignment="Stretch" >
    <ctrl:NotifyBar.Content>
        <TextBlock Height="30" Text="{Binding ElementName=MainWindow, Path=NotifyMessage, Mode=TwoWay}" HorizontalAlignment="Stretch" />
    </ctrl:NotifyBar.Content>
</ctrl:NotifyBar>
    public string NotifyMessage
    {
        get { return _NotifyMessage; }
        set 
        {
            if (_NotifyMessage != value)
            {
                _NotifyMessage = value;
                OnPropertyChanged("NotifyMessage");
            }
        }
    }
<ctrl:NotifyBar DataContext="{Binding ElementName=MainWindow}"  DockPanel.Dock="Top" Background="White" HorizontalAlignment="Stretch" >
    <ctrl:NotifyBar.Content>
        <TextBlock Height="30" Text="{Binding Path=NotifyMessage, Mode=TwoWay}" HorizontalAlignment="Stretch" />
    </ctrl:NotifyBar.Content>
</ctrl:NotifyBar>