所以,我做了我自己的UserControl的子類,名爲ChildView(我真的不能拿出一個體面的名字),我想要顯示在一個窗口中的容器內,我有很多這些用戶控件的不同類型和窗口必須能夠顯示所有這些用戶控件。該用戶控件已經實現了我的子類,像這樣:數據綁定到自定義UserControl
<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");
}
}
但是,這不是我RK。當我設置CurrentView時,我的容器中沒有顯示任何內容。輸出中沒有錯誤消息表明綁定存在問題。窗口中的其他數據綁定工作。
<Grid x:Name="ViewHolder" Grid.Column="1" Grid.Row="1">
<src:LoginView />
</Grid>
我讀過一些關於依賴屬性,但我不認爲我需要一個在這裏:我可以直接在XAML指定其類,即使用我的ChildViews?儘管我可能犯了一些錯誤,但我無法完全理解它......
所以我想我的問題是;我需要一個依賴屬性嗎?如果是這樣的話,我如何在這種情況下實現它?如果不是,問題是什麼?
嘗試'snoop'。它是wpf實用程序,非常有用的檢查是你的控件存在於網格中,以及你在這裏有什麼問題 – Eugene
根據Snoop,我的ViewHolder包含「ChildView 2」,如果我檢查它的屬性,DataContext以綠色突出顯示「[(namespace).LoginView] {Path = CurrentView}」。 IsInitialized,IsLoaded,IsVisible,IsEnabled都是真的......高度和寬度都有合理的值。 – moggizx