【问题标题】:Namespaces in XAMLXAML 中的命名空间
【发布时间】:2015-04-28 20:31:41
【问题描述】:

如果我在不同的命名空间中编写控件,我无法在 XAML 中显示这些命名空间。示例:

Namespace Sample -> Class A
Namespace Sample.Controls -> Class B

我们可以用 XAML 编写:

...
xmlns:sample="clr-namespace:Sample"
xmlns:controls="clr-namespace:Sample.Controls"
...

<sample:A .../>
<controls:B .../>

但这不是:

<sample:Controls.B />      <-- Is not correct! ERROR!

但是,当我们使用 expresion blend SDK 库时,是的。他们能。它们具有名称空间并且是正确的。我们可以使用:

<i:Interaction.Behaviors />
<i:Interaction.Triggers />
<i:DependencyObjectHelper.SelfAndAncestors />
...

在命名空间中写入 'i:' 和智能感知显示组织...

我们如何编写可以做到这一点的库?

【问题讨论】:

    标签: c# wpf xaml namespaces


    【解决方案1】:

    在声明你的名字空间之后,你必须从那个名字空间中创建一个类的实例。所以使用 Windows.ressources。

    流这个链接http://www.wpf-tutorial.com/wpf-application/resources/

    【讨论】:

      【解决方案2】:

      通过 ILSpy 我找到了答案。

      在“i:interaction”中,智能感知显示名称空间的图标,但不是真正的名称空间,是附加属性。 Interaction 是静态类,Behaviors 和 Triggers 是附加属性。

      那么,当我们写的时候:

      <TextBox>
          <i:Interaction.Behaviors>     // Is a Attached Property, not an object
               ...
          </i:Interaction.Behaviors>
      </TextBox>
      

      我以为属性和附加属性的语法是一样的,但是不...是,不是

      <TextBox>
          <TextBox.Width>          // "normal" object property: <object+property>
              ...
          </TextBox.Width>
      
          <i:Interaction.Triggers> // attached property: <attachedProperty>
              ...
          </i:Interaction.Triggers>
      </TextBox>
      

      对吗?!?

      【讨论】:

        猜你喜欢
        • 2014-08-23
        • 1970-01-01
        • 2016-04-01
        • 1970-01-01
        • 2015-11-04
        • 2012-03-13
        • 1970-01-01
        • 2011-09-10
        相关资源
        最近更新 更多