我一直在" A' Binding'只能在DependencyObject的DependencyProperty上设置。"我的XAML文件中的错误并且运行应用程序也没有。
我只是要发布代码,因为我已经盯着这几个小时,没有解决方案...
MainWindow.xaml
<local:ToolBarButton ViewModel="{Binding SelectedScreen.BackButtonViewModel}"/>
以上一行是我在MainWindow.xaml上发生错误的原因。
我的MainWindowViewModel中定义了SelectedScreen
属性。代码如下。
MainWindowViewModel.cs
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];
}
}
正如您所看到的,我在我的DataContext
类中用作MainWindow
的视图模型实际上是一个依赖属性。然而,我无法使其正常工作,并且我不断收到错误,告诉我这不是一个依赖对象。
此外,以下是关联用户控件上ViewModel
属性的代码。
ToolBarButton.xaml.cs(用户控件)
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);
}
}
}
我错过了什么?
答案 0 :(得分:0)
我不确定这是什么意思。我尝试了所有这些步骤,但我最后一次尝试,将所有这些一起完成,这解决了问题。如果其他任何人在遵循所有其他建议后仍然对这个问题有所了解,那就试试吧。