首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取'A‘绑定’只能在DependencyProperty of a DependencyObject上设置。‘DependencyObject上的错误

获取'A‘绑定’只能在DependencyProperty of a DependencyObject上设置。‘DependencyObject上的错误
EN

Stack Overflow用户
提问于 2017-05-29 17:38:36
回答 1查看 2.6K关注 0票数 0

我一直得到一个"A‘绑定’只能设置在一个DependencyProperty的DependencyObject。“我的XAML文件中的错误和运行应用程序也不起作用。

我要把代码发出去,因为我已经盯着这个看了好几个小时了,没有分辨率.

MainWindow.xaml

代码语言:javascript
复制
<local:ToolBarButton ViewModel="{Binding SelectedScreen.BackButtonViewModel}"/>

上面这一行让我在MainWindow.xaml上出错了。

SelectedScreen属性在我的MainWindowViewModel中定义。下面的代码。

MainWindowViewModel.cs

代码语言:javascript
复制
public class MainWindowViewModel : DependencyObject, INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged = delegate { };

    private ObservableCollection<ScreenViewModelBase> _screens;
    public ObservableCollection<ScreenViewModelBase> Screens
    {
        get { return _screens; }
        set
        {
            if (value != _screens)
            {
                _screens = value;
                PropertyChanged(this, new PropertyChangedEventArgs(nameof(Screens)));
            }
        }
    }

    public static readonly DependencyProperty SelectedScreenProperty =
        DependencyProperty.Register(nameof(SelectedScreen), typeof(ScreenViewModelBase), typeof(MainWindowViewModel));


    public ScreenViewModelBase SelectedScreen
    {
        get { return (ScreenViewModelBase)GetValue(SelectedScreenProperty); }
        set { SetValue(SelectedScreenProperty, value); }
    }



    public MainWindowViewModel()
    {
        Screens.Add(new HomeScreenViewModel());
        SelectedScreen = Screens[0];

    }
}

如您所见,我的视图模型作为MainWindow类上的MainWindow,实际上是一个依赖属性。然而,我无法使它正常工作,而且我一直收到一个错误,它告诉我这不是一个依赖对象。

此外,下面是关联用户控件上的ViewModel属性的代码。

ToolBarButton.xaml.cs (用户控制)

代码语言:javascript
复制
public partial class ToolBarButton : UserControl//, INotifyPropertyChanged
{

    public static DependencyProperty viewModelProperty = DependencyProperty.Register(nameof(ViewModel), typeof(ToolBarButtonViewModel), typeof(ToolBarButton));

    public ToolBarButtonViewModel ViewModel
    {
        get
        {
            return (ToolBarButtonViewModel)GetValue(viewModelProperty);
        }
        set
        {
            SetValue(viewModelProperty, value);
        }
    }
}

我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-30 20:55:35

我不知道这是怎么回事。我尝试了所有这些步骤,但我做了最后一次尝试,把它们都做在一起,这解决了问题。如果其他人在接受其他建议后,在这个问题上束手无策,那就试试这个。

  1. 关闭XAML文件。
  2. 把你的溶液清理干净。
  3. 关闭。
  4. 重新启动你的电脑。是的,这看起来有点过火了,但这是起作用的部分原因,所以我要把它包括在内。
  5. 重新打开你的解决方案并重建。
  6. 重新打开XAML文件,问题应该得到解决。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44247921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档