【问题标题】:Silverlight 4 - Setting design time style of User Controls in controls project?Silverlight 4 - 在控件项目中设置用户控件的设计时样式?
【发布时间】:2011-07-11 15:28:21
【问题描述】:

我有一些用户控件需要在多个 Silverlight 4 项目之间共享。我正在创建一个新项目,该项目在名为 [appname].[UI]

的命名空间中定义这些控件

我想为项目中的所有这些控件创建一个新样式表,但是我不知道如何在设计时引用样式(我可以通过 style="" 属性引用它们,但它们永远不会被应用)。

此外,我确实知道应用程序必须“注册”样式表作为其资源的一部分。有没有办法在我的 UI 项目中这样做?

我的假设是否有误,或者是否有解决这些问题的方法?

【问题讨论】:

    标签: c# silverlight user-controls silverlight-4.0


    【解决方案1】:

    要注册,请在您的 App.xaml <ResourceDictionary> 条目中添加 <MergedDictionary> 标记。这将允许应用程序访问您的样式,如下所示:

    <Application.Resources>
      <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
          <ResourceDictionary Source="YourResourceFile.xaml"/>
        </ResourceDictionary.MergedDictionaries>
      </ResourceDictionary>
    </Application.Resources>
    

    注册后,Style="" 属性应该可以工作,但如果不能,请发布代码。这可能是 XAML 中的错误。

    【讨论】:

    • 嗨@CamronBute,它在应用程序内工作,但是在设计时,当我在单独的项目[appname]中构建控件时。[ui]我如何在设计时引用样式表?
    • 我有点困惑...您的样式表是在 UI 项目中,还是在其他项目中?
    • 样式表在控件项目中。问题是我看不到设计时发生了什么。样式从不应用。如果我通过 MergedDictionaries 选项注册样式表,这意味着我只能在应用程序项目本身的设计时看到控件的外观,但在定义它们的控件项目的设计时看不到。
    • 我想我理解的更好一些。您是否尝试在控件项目中应用样式?据我了解,您将样式应用于同一项目中的控件,就好像它是您唯一的项目一样。然后,您只需从应用程序项目中添加它们。如果这不起作用,我就没主意了。
    【解决方案2】:

    围绕样式的 silverlight 术语有点令人困惑。听起来当您说样式表时,您实际上是指模板。如果您想始终如一地设置控件的公共属性(例如 FontSize、Background 等),您将需要使用样式。但是,如果您想更改控件的布局方式,您将需要设置一个新的控件模板。修改控件模板对于自定义控件要强大得多,但也可能很痛苦,因为据我所知,您只能通过 XAML 编辑模板。如果您使用的是 Expression Blend,我认为您可以编辑模板所见即所得。

    样式和模板之间的差异概述: http://msdn.microsoft.com/en-us/library/cc295273.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多