代码之家  ›  专栏  ›  技术社区  ›  Puppy

XAML中的预处理器条件编译

  •  9
  • Puppy  · 技术社区  · 14 年前

    我有一些用C#WPF编写的代码,还有一些用于调试的代码,这些代码目前是在调试或发布模式下编译的。如何启用或禁用当前基于C预处理器定义写入XAML的UI控件?

    3 回复  |  直到 14 年前
        1
  •  13
  •   Pieter van Ginkel    14 年前

    可以在构造函数中添加一些启用/禁用元素的代码:

    public MainWindow()
    {
        InitializeComponent();
    
    #if DEBUG
        button1.IsEnabled = false;
    #endif
    }
    
        2
  •  3
  •   Jeff Yates    14 年前

    没有用于XAML的预处理器样式指令。但是,您可以根据生成配置包括和排除XAML文件,从而提供一些控制。这可以为您提供一种根据所选生成配置包括文件变体的方法。当然,缺点是必须维护一个文件的多个版本。这可以通过使用 T4 templates 以便根据所选配置自动生成不同的文件。

        3
  •  0
  •   basarat    14 年前

    有两种方法可以做到这一点。一种是使用预处理器指令,该指令可以屏蔽仅在特定生成中运行它的完整代码部分。或者可以使用Conditional属性轻松屏蔽完整的方法。 http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=420
    以下是对两者区别的描述: http://www.thinkfarahead.com/2007/09/if-debug-vs-conditional.html . 您可以通过在xaml中提供x:Name属性并将用于禁用代码条件部分中的控件的代码放入代码中来引用代码中的控件。

    更新:为了更清楚地提到x:Name属性。