XAML 語法錯誤阻止設計器但編譯正常
我遇到了一件相當奇怪的事情,我
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>從技術上講,這兩種
InactiveSystemColors類型來自 .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