Dot-Net

XAML 語法錯誤阻止設計器但編譯正常

  • January 21, 2013

我遇到了一件相當奇怪的事情,我DataGrid在 WPF XMAL 頁面中定義了一個聲明,其中聲明了以下內容:

<DataGrid.Resources>
   <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#FF3399FF" />
   <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="White" />
   <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="#FF3399FF"/>
   <SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightTextBrushKey}" Color="White" />
</DataGrid.Resources>

從技術上講,這兩種Inactive SystemColors類型來自 .net 4.5,但是當它設置為目標 .net 4 時我可以編譯程序,並且這些非活動畫筆可以工作,但是當它設置為目標 .net 4 時,在 Visual Studio 中載入 XMAL 設計器頁面會拋出錯誤The member "InactiveSelectionHighlightTextBrushKey" is not recognized or is not accessible.,然後阻止設計器視圖。但它仍然按照上面程序中的定義進行編譯和顯示。

至少可以說這似乎非常不一致,我無法判斷這是 Visual Studio 2012 問題還是它允許程序編譯,因為我的開發電腦安裝了 .net 4.5 並且它只是在它看到時更改目標框架有些東西正在使用它(儘管我非常懷疑)。或者是否有可能 Inactive 類型在 .net 4 中,但未在文件中列為受支持,而只是在 VS 中導致此問題?

在 .net 4 中是否有更好的方法來允許我設置 DataGrid 行的非活動選擇顏色?或者是升級到 .net 4.5 的唯一方法?

Visual Studio 會建構一個程序集,即使它的目標設置為 .NET FW 4.0 並且您InactiveSelectionHighlightBrushKey在 XAML 程式碼中使用。此程序集將在具有 .NET FW 4.5 的系統中正確執行。但是如果系統只有.NET FW 4.0,當系統創建使用者控制項時會拋出異常InactiveSelectionHighlightBrushKey

因此,您不能使用InactiveSelectionHighlightBrushKey目標設置為 FW 4.0 的 in 程序集,因為它們無法在只有 .NET FW 4.0 的系統中工作。

LostFocus/LostKeyboardFocus/GotFocus要同時支持 FW 4.0 和 FW 4.5,您可以在事件處理程序中設置所選行的顏色。請參閱範常式式碼https://stackoverflow.com/a/8095932/1815957

引用自:https://stackoverflow.com/questions/13810772