我正在尝试创建一个具有contentcontrol的用户控件,该控件将其内容绑定到依赖对象。代码如下
的Xaml
<ContentControl Grid.Column="1" HorizontalAlignment="Stretch" x:Name="NotifyContent" Content="{Binding ElementName=notifyBarCtrl, Path=Content, NotifyOnSourceUpdated=True}" />
C#
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));
我遇到的问题是,当我尝试使用xaml将内容定义为文本块,然后将text属性绑定到我的应用程序中的字符串时,它在字符串更改时无法更新:
我的申请代码如下
的Xaml
<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>
C#
public string NotifyMessage
{
get { return _NotifyMessage; }
set
{
if (_NotifyMessage != value)
{
_NotifyMessage = value;
OnPropertyChanged("NotifyMessage");
}
}
}
任何关于我可能遗失或可能做错的建议都会非常感激。
由于
[编辑]
我已经将内容依赖性属性更改为NotifyContent,因为我收到警告,它正在覆盖Content to UserControl,但这仍然没有解决问题
答案 0 :(得分:0)
所以我发现这是因为我在文本块中使用了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>