[英]A binding can only be set on a DependencyProperty of a DependencyObject?
[英]Getting a 'A 'Binding' can only be set on a DependencyProperty of a DependencyObject.' error on a DependencyObject
我不斷收到“只能在 DependencyObject 的 DependencyProperty 上設置“綁定”。 我的 XAML 文件中出現錯誤並且運行該應用程序也不起作用。
我只是要發布代碼,因為我一直盯着這個幾個小時,沒有解決方案......
主窗口.xaml
<local:ToolBarButton ViewModel="{Binding SelectedScreen.BackButtonViewModel}"/>
上面這行是我的 MainWindow.xaml 出現錯誤的原因。
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];
}
}
如您所見,在MainWindow
類中用作DataContext
視圖模型實際上是一個依賴屬性。 然而,我無法讓它正常工作,我不斷收到錯誤消息,告訴我這不是依賴對象。
此外,這是關聯用戶控件上的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);
}
}
}
我錯過了什么?
我不確定這是關於什么的。 我嘗試了所有這些步驟,但我最后嘗試了一次,將所有這些步驟一起做,這解決了問題。 如果其他人在遵循所有其他建議后對這個問題不知所措,請嘗試此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.