14

我正在使用舊版產品。我需要根據構建常量使複雜UI的區域可選。將這些區域移入控件是不可行的,所以我使用了AlternateContent標記(mc:AlternateContent)。AlternateContent標籤導致IDE問題,但不是編譯器

在編譯和應用程序按預期運行時,此功能完美無缺。

但是,IDE要求每個AlternateContent一個錯誤,而封閉式選擇標籤,並不會加載設計窗口/預覽(在VS或混合):

The name "AlternateContent" does not exist in the namespace "http://schemas.openxmlformats.org/markup-compatibility/2006" 
The name "Choice" does not exist in the namespace "http://schemas.openxmlformats.org/markup-compatibility/2006" 

我都試過了,重建,清洗和重建,在發佈,調試,x86,x64和重新引導之間更改構建設置。沒什麼幫助。它甚至在Blend中給出了相同的錯誤。

我希望這只是我所做的一些愚蠢的事情,我可以修復它;或者可能是我應該使用的更新的名稱空間URI。如果我無法解決錯誤,我希望有人知道在IDE中抑制這些錯誤的技巧,所以可以使用它。

我有一個完全更新的VS2013高級版安裝。然而,它在運行VS14 CTP的測試機器上,以及另一個運行的VS2012(完全更新)上都有問題,它們都沒有任何加載項;所以我不得不認爲這不是我的電腦安裝問題。

+0

你有沒有解決這個問題?我也在幾臺電腦上遇到同樣的問題,我正在努力尋找一個解決方案.. – abbottdev

+0

VS2013更新3仍然無法處理 - 設計器只是說「無效標記」 – springy76

+0

@JohnChristman,你有沒有找到解決方案對此? – aperl

回答

0

這個怎麼樣:

public class BuildConstants 
{ 
    public bool IsDebug 
    { 
     get 
     { 
#if DEBUG 
      return true; 
#else 
      return false; 
#endif 
     } 
    } 
} 

和XAML:

<Application.Resources> 
    <BooleanToVisibilityConverter x:Name="BooleanToVisibilityConverter"></BooleanToVisibilityConverter> 
    <l:BuildConstants x:Key="BuildConstants" /> 
</Application.Resources> 

<Grid Visibility="{Binding IsDebug, Source={StaticResource BuildConstants}, Converter={StaticResource BooleanToVisibilityConverter}}"> 
    <TextBlock Text="This will be visible only when DEBUG build constant is present"></TextBlock> 
</Grid> 
+0

使用AlternateContent的全部原因是確保將內容從XAML中除去,例如,如果使用反編譯器,則無法撤消更改或將其添加回來。如果按照您的建議你可以編輯程序集並將IsDebug標誌更改爲任何你想要的。 – rolls

8

有點遲到了,但如果你的MC標記添加到您忽略的屬性錯誤消失。您的內容不會顯示在設計器中,但在編譯我的項目的不同風格時適用於我。

<UserControl... 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:conditional="defined-in-assembly.cs" 
    mc:Ignorable="d mc"/> 
+0

問題:您是否從主題/標題或內容中讀取了比「AlternateContent」這個詞更多的內容? – springy76

+1

當然。你在我的答案中讀過了逗號嗎?通過向mc:Ignorable行添加mc,IDE不再抱怨AlternateContent或Choice標籤,因爲它忽略了它們。正如我所說的那樣,它實際上不會在設計器中顯示AlternateContent,但是當您編譯並運行它時,它將按預期工作(就像在Visual Studio中顯示錯誤時一樣)。它只是忽略了錯誤,並且至少允許您查看和修改其餘佈局。不完美,但爲我工作。 – Redroy

+0

...並且也是OP之後的東西>「如果我無法解決錯誤,我希望有人知道在IDE中抑制這些錯誤的技巧,所以可以使用它。」 – Redroy

相關問題