从xaml.cs访问Vspackage中的Interface属性

时间:2018-02-08 07:22:37

标签: c# wpf xaml

我在xaml.cs页面中从VSPackage1Package访问了一个Interface属性(StatusBar),但它总是返回null。而字符串属性返回预期值。 请帮助我在我的xaml.cs页面上访问StatusBar属性。

VSPackage1Package:

using Microsoft.VisualStudio.Shell.Interop;
public sealed class VSPackage1Package : Package
    {
        private IVsStatusbar bar;      
        public IVsStatusbar StatusBar
        {
            get
            {
                if (bar == null)
                {
                    bar = GetService(typeof(SVsStatusbar)) as IVsStatusbar;
                }
                return bar;
            }
        }

        public VSPackage1Package()
        {

        }
    }

xaml.cs:

 public partial class TestWindowControl : UserControl
    {
        public void button_Click(object sender, RoutedEventArgs e)
        {
            VSPackage1Package package = new VSPackage1Package();
            package.StatusBar.SetText("my message");//Here Statusbar is null
        }
    }

1 个答案:

答案 0 :(得分:0)

我可以使用GetGlobalService

访问xaml.cs页面中的状态栏

<强> VSPackage1Package:

 public static IVsStatusbar GetActiveStatusBar()
        {            
            return Package.GetGlobalService(typeof(SVsStatusbar)) as IVsStatusbar;            
        }

<强> xaml.cs:

var statusBar = VSPackage1Package.GetActiveStatusBar();
statusBar.SetText("My message");