c# – WPF相当于Silverlight“RootVisual”

前端之家收集整理的这篇文章主要介绍了c# – WPF相当于Silverlight“RootVisual”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将应用程序从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;

猜你在找的C#相关文章