因此,我创建了自己的 UserControl 子类,称为 ChildView(我真的想不出一个像样的名字),我想在窗口中的容器内显示它,我有许多不同类型的 UserControls 和窗口必须能够展示所有这些。UserControls 已经像这样实现了我的子类:
<src:ChildView x:Class="(namespace).LoginView" [...]>
public partial class LoginView : ChildView
我试图将它添加到我的窗口中,如下所示:
<Grid x:Name="ViewHolder" Grid.Column="1" Grid.Row="1">
<src:ChildView DataContext="{Binding CurrentView}" />
</Grid>
private ChildView _currentView;
public ChildView CurrentView
{
get { return _currentView; }
set
{
if (_currentView == value)
return;
_currentView = value;
smLog.Trace("View set to {0}", value.GetType().Name);
NotifyPropertyChanged("CurrentView");
}
}
但是,这不起作用。当我设置 CurrentView 时,我的容器中没有显示任何内容。输出中没有表明绑定存在问题的错误消息。窗口中的其他数据绑定有效。我可以通过直接在 XAML 中指定它们的类来使用我的 ChildViews,即:
<Grid x:Name="ViewHolder" Grid.Column="1" Grid.Row="1">
<src:LoginView />
</Grid>
我已经阅读了一些关于依赖属性的内容,但我认为我不需要这里吗?无论如何我确实尝试过实现一个,但它似乎没有帮助,虽然我可能犯了一些错误,但我无法完全理解它......
所以我想我的问题是;我需要依赖属性吗?如果是这样,在这种情况下我该如何实施?如果不是,问题是什么?