none
设计时不能解析样式资源 RRS feed

  • 问题

  • 我自己写了一个样式资源字典,在APP.xaml里引用的,代码如下
    <Application.Resources>
    
      <ResourceDictionary>
    
      <ResourceDictionary.MergedDictionaries>
    
       <ResourceDictionary Source="/Styles/Styles.xaml"></ResourceDictionary>
    
      </ResourceDictionary.MergedDictionaries>
    
      </ResourceDictionary>
    
     </Application.Resources>
    
    
    可是在我设计页面时却添加Styles.xaml里的样式资源
    Style="{StaticResource RButtonTemplate}"
    时却报不能解析样式资源的错误,但运行时不报错,也能看到样式资源对应的效果。请教一下高手这是怎么回事啊?我的APP的cs里加入了main函数,生成操作改为了page
    • 已编辑 ztx_lingdu 2011年5月26日 1:45 修改
    2011年5月26日 1:43

答案

  • 我根据你的描述做个相应的设置,在VS2008 和 VS 2010中都试了下,App.xaml 生成动作为 Page,在cs中增加了Main方法,例如:
     [System.STAThreadAttribute()]
     [System.Diagnostics.DebuggerNonUserCodeAttribute()]
     public static void Main()
     {
     WpfApplication1.App app = new WpfApplication1.App();
     app.InitializeComponent();
     app.Run();
     }
    
     
    然后再主窗体中建立一个按钮使用这个样式,设计器都能正常显示,我在Windows 7 和 Server 2008 R2,.Net 3.5 和 4都测试,没有问题。


    • 不过我要提示一下的是,如果你在一个UserControl中增加一个按钮并且使用这个样式,对于独立的还有没被添加到一个窗体中的去的UserControl来讲,他是无法定位到App的ResourceDictionary的,所以设计器在这种情况下会报无法找到。一旦我们把UserControl加到window中,他就可以通过的Window和App的关系层次来找到App中合并的资源了。所以编译后是可以正常工作的。如果你不喜欢这个设计时的错误,你可以用  DynamicResource 或者 你直接在UserControl中合并一次。

     

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.




    2011年5月26日 9:18
    版主

全部回复

  • 请问是VS08还是VS2010? 这两个版本设计时环境差别很大,VS08中有很多这样的问题,设计无法准确找到资源,但不影响运行。
    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年5月26日 5:26
    版主
  • 我根据你的描述做个相应的设置,在VS2008 和 VS 2010中都试了下,App.xaml 生成动作为 Page,在cs中增加了Main方法,例如:
     [System.STAThreadAttribute()]
     [System.Diagnostics.DebuggerNonUserCodeAttribute()]
     public static void Main()
     {
     WpfApplication1.App app = new WpfApplication1.App();
     app.InitializeComponent();
     app.Run();
     }
    
     
    然后再主窗体中建立一个按钮使用这个样式,设计器都能正常显示,我在Windows 7 和 Server 2008 R2,.Net 3.5 和 4都测试,没有问题。


    • 不过我要提示一下的是,如果你在一个UserControl中增加一个按钮并且使用这个样式,对于独立的还有没被添加到一个窗体中的去的UserControl来讲,他是无法定位到App的ResourceDictionary的,所以设计器在这种情况下会报无法找到。一旦我们把UserControl加到window中,他就可以通过的Window和App的关系层次来找到App中合并的资源了。所以编译后是可以正常工作的。如果你不喜欢这个设计时的错误,你可以用  DynamicResource 或者 你直接在UserControl中合并一次。

     

    Sincerely,


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.




    2011年5月26日 9:18
    版主
  • 恩 谢谢小包了

    2011年5月26日 23:37