簡體   English   中英

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

[英]XAML syntax error is blocking designer but compiling fine

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

<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而且只是在它看到時才更改目標框架有些東西正在使用它(我非常懷疑這一點)。 或者,非活動類型是否可能在.net 4中,但未在文檔中列出,並且僅在VS中導致此問題?

有沒有更好的方法在.net 4中執行此操作以允許我設置DataGrid行的非活動選擇顏色? 或者是升級到.net 4.5的唯一方法嗎?

即使Visual Studio的目標設置為.NET FW 4.0並且在XAML代碼中使用InactiveSelectionHighlightBrushKey ,Visual Studio也會構建一個程序集。 此程序集將在具有.NET FW 4.5的系統中正確執行。 但是,如果系統具有.NET FW 4.0,則當系統使用InactiveSelectionHighlightBrushKey創建用戶控件時, 將引發異常

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

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

如果您不想使用代碼,那么InactiveSelectionHighlightBrushKey的替代方法是ControlBrushKey 以下對我有用:

<Style x:Key="ReadOnlyDataGrid" TargetType="{x:Type DataGrid}">
    <Style.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightGreen"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="LightGreen"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Black"/>
    </Style.Resources>
</Style>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM