考慮下面的XAML代碼:如何確定一個視圖有一個具體的控制
<UserControl>
<Grid x:Name="UiRoot"/>
</UserControl>
現在,在視圖模型,我不得不視圖的參考(從Caliburn.Micro OnViewLoaded)。然後我需要確定View是否有一個名爲UiRoot的網格。
protected override void OnViewLoaded(object view) {
base.OnViewLoaded(view);
//Does the view have a UiRoot?
}
此代碼實際上是在ViewModelBase,有時視圖將有UiRoot,有時不是。它用於在存在時動態創建視圖。
我的第一個想法是創建一個IHasUiRoot接口並將其放在代碼隱藏中。然後我可以將它投射到IHasUiRoot。這有效,但由於我有一個空的Codebehind,我想保持它的方式,並通過反射或其他方式。最後,我需要對實際控件的引用,以便動態地爲其添加控件。
太好了,謝謝。正是我需要的。 –