如何使用xaml魔法

时间:2013-01-24 10:04:51

标签: wpf xaml ribbon

我在找出使用xaml关键字的位置时遇到了问题,因为很难弄清楚它想要什么样的层次结构。似乎有一些关于如何以及在何处使用属性,属性或子节点的宏伟设计。

<Node Attribute="True">
  <Node.Property />
</Node>

我发现这个漂亮的页面解释了所有ribbon menu properties,但不知道如何在xaml中使用它们。经过半个小时的搜索和尝试,我设法在功能区菜单按钮中显示一个图标。

  1. 这一切背后的逻辑是什么以及如何弄清楚在哪里使用?

  2. 如何将功能区菜单与应用程序栏(大多数Windows应用程序中的顶部栏)合并?所以我得到了一个很好的功能区应用程序菜单,就像在示例中一样。

  3. 有没有办法关闭xaml背景补充?我为此牺牲了Intellisense。

  4. 因为xaml编辑器性能很差,所以有很多建议,但到目前为止都没有。

    编辑: 我知道xaml语法,但没有提示要使用什么层次结构。因此,如果我找到我想要使用的对象(因为它们都可用),它只会说我使用了错误的对象,它应该询问它想要的对象类型。

    在使用引用时,在正常编程中,您始终可以使用其中的所有类。使用xaml,我们必须突然知道我们的类来自哪个引用,也不会找到你的引用,你要么必须尝试所有引用,看看它们是否有某个类或找到代码示例。

2 个答案:

答案 0 :(得分:2)

好问题。在你的#1问题中,你有点难以理解你所要求的东西,但我会对那个问题做一个简短的尝试。我对你的#2问题有答案。我的#3没有答案。

  

“1。这一切背后的逻辑是什么以及如何弄清楚在哪里使用?”

就像克莱门斯提到的那样,XAML Overview在解释事情方面做得非常好。 我猜你要问的一个主要问题基本上是“你什么时候使用属性语法vs属性元素语法”。从那个文档:

  

对于对象元素的某些属性,属性语法是不可能的,因为提供属性值所需的对象或信息无法在属性语法的引号和字符串限制内充分表达。对于这些情况,可以使用称为属性元素语法的不同语法....

现在谈谈这部分问题......

  

“在正常编程中,当你使用引用时,你总是可以使用它中的所有类。使用xaml我们必须突然知道我们的类来自哪个引用,也不会找到你的参考,你要么必须尝试所有引用,看看他们是否有某个类或找到代码示例。“

如果您的问题的一部分更多关于如何更轻松地处理您的XAML(或更合适的xmlns)命名空间,以便更容易在XAML中获得引用,那么a technique就是您可能会觉得有用。它允许您合并名称空间,以便您可以使用更少的XAML名称空间前缀(如果您将此技术发挥到极致,甚至不会使用名称空间前缀)。

  

“2.如何将功能区菜单与应用程序栏(大多数Windows应用程序中的顶部栏)合并?所以我得到了一个很好的功能区应用程序菜单,就像在示例中一样。”

基本上你似乎在问:如何:(a)将窗口镀铬区域(Aero玻璃区域)向下延伸到窗口的客户端部分(应用程序通常放置的部分)和( b)将窗口的客户端部分向上扩展到窗口镶边区域。如果您可以这些这些东西,那么您最终可能会得到类似于Microsoft办公产品或现代Web浏览器的东西。幸运的是WPF Shell Integration Library可以帮助你完成这两件事。我发现this blogthis blog(以及它们提供的源代码)是开始使用WPF Shell集成库的良好指南。

使用这个库,我能够创建这个窗口(除了Aero颜色变化能力之外的所有其他主题)。请注意,我提到的两个特性都在这里工作(TabControl正在正常窗口镀铬顶部区域显示,窗口镀铬Aero玻璃正在正常客户区域中显示):

Window Chrome example

答案 1 :(得分:1)

这是我的看法

  

1)这一切背后的逻辑是什么以及如何弄清楚要使用什么   在哪里?

""之间适合的任何内容都可以内联如下:

<TextBlock Text="{Binding Name}" />

无论什么不可以,采取元素方式:

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0} ({1})">
            <Binding Path="Name" />
            <Binding Path="Gender" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>
  

2)如何将功能区菜单与应用程序栏(顶部栏)合并   大多数Windows应用程序)?所以我得到一个很棒的功能区应用菜单,   就像在例子中一样。

你会发现谷歌周围的或多或少复杂的mumbo jumbo,这是它的本质:

<Window ...
        WindowStyle="None" AllowsTransparency="True" Background="Transparent"
        ...>
    <!-- Fill it up with a PNG image if you want to play with transparency -->
</Window>

然后将功能区设为顶部元素,然后重新创建“关闭/最大化”按钮

  

3)有没有办法关闭xaml背景补丁?我牺牲了   Intellisense为此。

是的,它被称为Notepad++