gpt4 book ai didi

wpf - XAML 中的 "Conditional Compile"?

转载 作者:行者123 更新时间:2023-12-04 20:43:36 30 4
gpt4 key购买 nike

我们有一个内部使用的程序来测试和验证我们销售的工业控制产品。我们希望能够向某些客户提供缩小版或轻量级版本。

我们的程序是使用 C# 和 WPF(因此是 XAML)编写的。使用条件编译功能可以轻松完成只为在我们的工厂中使用而构建的 C# 代码部分,例如,

#if FACTORY
// our in-house code . . .
. . .
. . .
#endif

但是我们如何才能为我们程序的 XAML 部分完成类似的事情呢?

注: **关于此主题有一个 Stack Overflow 问题,其中有人发布了一个带有链接的简洁答案,但该链接似乎与该问题无关。因此,不要以此为基础将其视为重复,因为这不能回答问题。*
XAML Conditional Compilation

最佳答案

链接的问题/答案中说明的技术可能有助于提供条件 加工 的 XAML 元素,但我不认为它会给你你所追求的。

还有另外两个选项可能更适合您的需求:程序化条件编译和构建时的条件包含。

对于编程条件编译,您可以在 View 后面的代码中使用常规条件编译(最好是因为它是您正在影响的 UI 元素)或在 View 模型中(不是那么纯粹,但如果您必须将它包含在多个中,则完全可以接受层)。此条件编译可用于更改从属性返回的值(通过更改编译并因此执行的行)或通过消除代码块(这很笨重但仍然有效),然后您可以拥有一个 XAML DataTrigger有一个 expression dependent on the conditionally compiled code .

另一个选项是指定 control templates in a XAML resource file并以编程方式选择它们或在 ItemGroup 中使用 MSBuild 属性expression in your proj file控制构建中包含哪些文件。结合模型/ View 模型中的常规程序条件编译,这应该为您的问题提供一个很好的干净解决方案 - 实际上使用此选项您甚至可能不需要程序条件编译。

TemplateSelector 也可能有帮助,但 IMVHO 它有点肮脏。 TemplateSelector 应该根据类型交换模板,但您也可以利用它来包含额外的代码来确定要使用的模板 - 这可能是包含条件编译代码的好地方。

关于wpf - XAML 中的 "Conditional Compile"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21638054/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com