我制作了一個MAUI應用程序,可以在模擬器中運行和調試,但每當我在沒有調試的情況下運行它時(在模擬器或物理設備上),它在打開某些頁面時會崩潰。我在Visual Studio中啟用了報告所有異常,現在在調試時,我遇到了很多奇怪的錯誤,其中一個是InvalidCastException
。看起來,該框架以某種方式試圖解釋XAML中的一些TextColor
值,但失敗了。
在引發此異常的頁面上,我刪除了所有TextColor
值賦值,但不幸的是,我仍然收到了異常。
如果有人知道解決這個問題的辦法,我將不勝感激。
{System.InvalidCastException:指定的強制轉換無效。在Microsoft.Maui.Controls.TextElement.OnTextColorPropertyChanged(BindableObject bindable,Object oldValue,Object newValue)在D:\a_work\1\s\src\Controls\src\Core\TextElement.cs:line 24的Microsoft.Maui.Controls.BindableObject.SetValueActual(BindableProperty屬性,BindablePropertyContext上下文,Object值,Boolean currentlyApplying,SetValueFlags屬性,SetterSpecificity specificity,Boolean silent)在Microsoft.Maui.Controls.BindableObject.SetValueCore(BindableProperty的D:\a_work\1\s\src\Controls\src\Core\BindableObject.cs:line 643中,在Microsoft.Maui.Controls.BindableObject.SetValue(BindableProperty屬性的{@3} 569中,對象值,SetValueFlags屬性,SetValuePrivateFlags privateAttributes,SetterSpecificity specificity)在{@15}的D:\a_work\1\s\src\Controls\src\Core\MergedStyle.cs:line 503中,在目標的Microsoft.Maui.Controls.Setter.Apply(BindableObject中,SetterSpeciality specificity(在Microsoft.Maui.Controls.Style.ApplyCore(BindableObject bindable的D:\a_work\1\s\src\Controls\src\Core\Setter.cs:line 81中),Style basedOn,SetterSpecificity specificity)在Microsoft.Maui.Controls.Style.Microsoft.Maui.Controls.IStyle.Apply(BindableObject處的D:\a_work\1\s\src\Controls\src\Core\Style.cs:line 176中bindable,SetterSpecificity specificity在D:\a_work\1\s\src\Controls\src\Core\Style.cs:line 107中的Microsoft.Maui.Controls.MergedStyle.SetStyle(IStyle implicitStyle,IList`1 classStyles,IStyle Style)在D:\a_work\1\s\src\Controls\src\Core\MergedStyle.cs:line 211中的Microsoft.Maui.Controls.MergedStyle.set_Style(IStyle value)在Microsoft的D:\a_work\1\s\src\Controls\src\Core\MergedStyle.cs:line 46中。毛伊島。控制。NavigableElement。<>c.<.cctor>b__22_0(BindableObject可綁定,Object oldvalue,Object newvalue)在D:\a_work\1\s\src\Controls\src\Core\Shell\NavigableElement.cs:line 21的Microsoft.Maui.Controls.BindableObject.SetValueActual(BindableProperty屬性中,BindablePropertyContext上下文,Object value,Boolean currentlyApplying,SetValueFlags屬性,SetterSpecificity specification,Boolean silent)在D:\a_work\1\s\src\Controls\src\Core\BindableObject.cs:line 643的Microsoft.Maui.Controls.BindableObject.SetValueCore(BindableProperty屬性、Object value,SetValueFlags屬性,SetValuePrivateFlags privateAttributes,SetterSpecificity specification)在Microsoft.Maui.Controls.Style.ApplyCore(BindableObject 569的Microsoft.Maui.Controls.BindableObject.SetValue(BindableProperty屬性中、Object value)在D:\a_work\1\s\src\Controls\src\Core\BindableObject.cs:line 474的
InvalidCastException
元素中、BindableProperty屬性、附加布爾值、Object value、IXmlLineInfo行D:\a_work\1\s\src\Controls\src\Xaml\ApplyPropertiesVisitor.cs:line 631}中的信息、IServiceProvider serviceProvider、異常和異常)
因此,解決方案是啟用在VS中捕獲所有異常(調試>窗口>異常設置Ctrl+Alt+E)。然后我就抓住了
InvalidCastException
。然后,我在我的應用程序中找到了引發此異常的最簡單的XAML頁面(顯然,它是由XAML解釋器引發的,所以我不能只以經典的step-by-step方式調試它)。然后我刪除了該頁面中的所有內容(記得備份),然后我開始逐一添加所有組件并重新啟動應用程序,直到我看到錯誤的開始。事實證明,我有一個
Button
,它應用了一個樣式(Style="{StaticResource PrimaryButton}"
),樣式的定義在App.xaml文件中。定義包含
TextColor
屬性的Setter
和Value
。由于某些原因,XAML解釋器出現問題。刪除帶有Setter
的行后,錯誤消失,應用程序開始正常工作。TextColor是從其他對象繼承的,所以它仍然和我需要的一樣(幸運的是)。