C# 绑定到XAML中派生类中定义的依赖项属性

C# 绑定到XAML中派生类中定义的依赖项属性,c#,wpf,xaml,C#,Wpf,Xaml,我有一个从窗口导出的简单视图。在该派生类的代码隐藏文件中,我定义了一个名为ActiveDocument的新DependencyProperty 我希望将这个新的DependencyProperty绑定到ViewModel上的一个属性,该属性被设置为视图的DataContext 我可以使用类构造函数中的代码设置此绑定,但是尝试绑定XAML文件中的属性会导致一条错误消息,指出在类窗口中找不到属性ActiveDocument 在XAML中执行此操作的正确语法是什么 [更新代码] MainWindowV

我有一个从窗口导出的简单视图。在该派生类的代码隐藏文件中,我定义了一个名为ActiveDocument的新DependencyProperty

我希望将这个新的DependencyProperty绑定到ViewModel上的一个属性,该属性被设置为视图的DataContext

我可以使用类构造函数中的代码设置此绑定,但是尝试绑定XAML文件中的属性会导致一条错误消息,指出在类窗口中找不到属性ActiveDocument

在XAML中执行此操作的正确语法是什么

[更新代码]

MainWindowViewModel.cs

class MainWindowViewModel
{
    public bool IWantBool { get; set; }
}
public partial class MainWindow : Window
{
    public MainWindow()
    {
        DataContext = new MainWindowViewModel();
        InitializeComponent();
    }

    public static readonly DependencyProperty BoolProperty = DependencyProperty.Register(
        "BoolProperty", typeof(bool), typeof(MainWindow));
}
MainWindow.xaml.cs

class MainWindowViewModel
{
    public bool IWantBool { get; set; }
}
public partial class MainWindow : Window
{
    public MainWindow()
    {
        DataContext = new MainWindowViewModel();
        InitializeComponent();
    }

    public static readonly DependencyProperty BoolProperty = DependencyProperty.Register(
        "BoolProperty", typeof(bool), typeof(MainWindow));
}
main window.xaml

<Window x:Class="DependencyPropertyTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:DependencyPropertyTest"

    <!-- ERROR: BoolProperty not found on type Window. -->
    BoolProperty="{Binding path=IWantBool}"

    <!-- ERROR: Attachable property not found in type MainWindow. -->
    local:MainWindow.BoolProperty="{Binding path=IWantBool}">

    <Grid>

    </Grid>
</Window>

local:MainWindow.BoolProperty=“{Binding path=IWantBool}”>

<代码> > p> XAML编译器不考虑“代码>窗口的实际类型,只查看根元素的类型。因此它不知道在
main窗口中声明的属性。我认为在XAML中很难做到这一点,但在代码隐藏中很容易做到:

public MainWindow()
{
    DataContext = new MainWindowViewModel();
    InitializeComponent();
    SetBinding(BoolProperty, new Binding("IWantBool"));
}

你能把密码寄出去吗?看起来您的XAML缺少
x:Class
属性。