0

我很难弄清楚在哪里使用什么 xaml 关键字,因为它很难弄清楚它想要什么层次结构。似乎有一些关于如何以及在何处使用属性、属性或子节点的宏伟设计。

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

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

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

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

  3. 有没有办法关闭 xaml 后台编译?我会为此牺牲智能感知。

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

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

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

4

2 回答 2

2

好问题。在#1 问题中确切地了解您所要求的内容有点困难,但我会简要介绍一下。我确实有你的#2问题的答案。对于你的#3,我没有答案。

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

就像 Clemens 提到的那样,XAML 概述在解释事情方面做得很好。我猜您要问的主要问题之一基本上是“何时使用属性语法与属性元素语法”。从那个文档:

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

现在关于你问题的这一部分......

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

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

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

本质上,您似乎在问如何:(a)将窗口镀铬区域(Aero glass 区域)向下扩展到窗口的客户端部分(您的应用程序通常可以放置东西的部分)和(b)扩展窗口的客户端部分向上进入窗口镶边区域。如果你能同时做这两件事,那么你最终会得到一些看起来像微软办公产品或现代网络浏览器的东西。幸运的是,有WPF Shell 集成库可以帮助您完成这两件事。我发现了这个博客这个博客(以及他们提供的源代码)很好的指南,用于开始使用 WPF Shell 集成库。

使用这个库,我能够制作这个窗口(除了 Aero 变色能力,这是一个完全不同的话题)。请注意,我提到的两种品质都在这里起作用(TabControl 显示在普通窗口镀铬顶部栏区域中,而窗口镀铬 Aero 玻璃正在显示在普通客户区域中):

窗口 Chrome 示例

于 2013-01-31T16:55:45.863 回答
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 应用程序的顶部栏)合并?所以我得到了一个不错的功能区应用程序菜单,就像在示例中一样。

你会在 google 周围找到或多或少复杂的 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后台编译?我会为此牺牲智能感知。

是的,它叫做记事本++

于 2013-01-31T17:39:13.413 回答