我创建了一个具有可在xaml中指定的依赖项属性的类。 E.g:
public class ToolWindowView : UserControl
{
public static readonly DependencyProperty TabTitleProperty = DependencyProperty.Register("TabTitle", typeof(object), typeof(ToolWindowView));
这很好用,我可以创建从ToolWindowView派生的控件并设置TabTitle。
<tw:ToolWindowView x:Class="..." x:ClassModifier="internal"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:tw="clr-namespace:..."
tw:ToolWindowView.TabTitle="My title">
但是当我尝试创建一个带有绑定作为DependencyProperty值的xaml元素时,DataContext为null并且绑定失败:
<tw:ToolWindowView x:Class="..." x:ClassModifier="internal"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:tw="clr-namespace:...">
<tw:ToolWindowView.TabTitle>
<TextBlock Text="{Binding MyText}"/>
</tw:ToolWindowView.TabTitle>
我想我理解原因是因为依赖属性不是逻辑树的一部分。我可以使用AddLogicalChild将DependencyProperty的值添加到逻辑树中,然后将其设置为可行,但是当我将逻辑子项添加到树中时,或者如果这是偶数时,它并不明显正确的方式。它看起来要复杂得多。有没有人知道如何正确地做到这一点,或者知道这方面的教程?