XAML in Xamarin.Forms 基礎篇 電子書

XAML in Xamarin.Forms 基礎篇 電子書
XAML in Xamarin.Forms 基礎篇 電子書

Xamarin.Forms 快速入門 電子書

Xamarin.Forms 快速入門 電子書
Xamarin.Forms 快速入門 電子書

2016/09/18

Xamarin.Forms XAML 的開發除錯技巧

當在進行 Xamarin.Forms 專案開發的時候,因為現階段 Visual Studio 的 Xamarin.Fomrs 對於 XAML 的編輯器支援程度不如 UWP 或者 WPF 的好用,因此,在開發除錯執行階段,往往會看到這樣的錯誤訊息:System.NullReferenceException: Object reference not set to an instance of an object.。而到底是哪裡發生了問題,也很難找出問題所在,現階段比較好的方法就是使用刪去法。
不過,當您切換起始專案到 UWP 專案之後,就會發現到真正 XAML 上的錯誤問題在哪裡,以及真正的原因是甚麼?

XAML 中的語法錯誤

在底下的 XAML 宣告一個 ListView 控制項,其中資料來源是由 MyItemList 資料綁定而來,而使用者選取的紀錄,將會綁定到 MyItemListSelected 屬性上。
    <ListView
      ItemsSource="{Binding MyItemList}"
      ItemSelected="{Binding MyItemListSelected}"
      />
乍看這樣的宣告似乎沒有甚麼問題,一旦當 Android 平台下執行的時候,就會發現到這樣的錯誤畫面
UnhandledExceptionXAML
為什麼會發生這樣的問題呢? 這是因為 ItemSelected 這是一個 ListView 的事件
不過,當切換到 UWP 開發環境下執行同樣的程式碼,會得到底下的訊息與畫面
'Xamarin.Forms.Xaml.XamlParseException' 類型的例外狀況發生於 Xamarin.Forms.Xaml.dll,但使用者程式碼未加以處理

其他資訊: Position 13:7. No Property of name ItemSelected found
XAMLParseException
其中,訊息: Position 13:7. No Property of name ItemSelected found 明確的說明了問題所在地點與內容,讓我們來對照原始 XAML 定義檔內容
XAML發生錯誤原始內容
您可以看到在13行的第7個位置,指的就是 ItemSelected,而根據錯誤訊息內容,那就使用錯誤的 XAML 屬性名稱,應該使要使用 SelectedItem 這個屬性。

沒有留言:

張貼留言