我正在尝试将应用程序从silverlight移植到wpf.不幸的是,我对两者都不熟悉.是否与
WPF中的以下Silverlight代码等效?
private static Canvas GetCanvas() { var uc = Application.Current.RootVisual as UserControl; if (uc == null) { return null; } return uc.FindName("ChoiceCanvas") as Canvas; }
目前我正在使用
Application.Current.MainWindow.FindName("ChoiceCanvas") as Canvas;
但这不起作用,也许是因为ChoiceCanvas位于UserControl而不是MainWindow中?
解决方法
FindName不起作用,因为Canvas存在于UserControl的名称范围内,请尝试使用LogicalTreeHelper.
var canvas = LogicalTreeHelper.FindLogicalNode( Application.Current.MainWindow,"ChoiceCanvas") as Canvas;