Использование MasterDetailPage или ToolbarItem создает исключение в Xamarin.Формы

#xaml #exception #windows-runtime #windows-phone-8.1 #xamarin.forms

#xaml #исключение #windows-среда выполнения #windows-phone-8.1 #xamarin.forms

Вопрос:

У меня есть следующие две части кода XAML в Xamarin.Проект переносной библиотеки XAML Forms:

 <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="TestApp.Views.TestView">
  <ContentPage.ToolbarItems>
    <ToolbarItem Text="{Binding ToolbarItemText}" Command="{Binding ToolbarItemCommand}" Order="Default" Priority="0"/>
  </ContentPage.ToolbarItems>
  <ContentPage.Content>
  </ContentPage.Content>
</ContentPage>
  

и

 <MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="TestApp.Views.Test2View">
  <MasterDetailPage.Master>
    <ContentPage Title="Currencies">
      
    </ContentPage>
  </MasterDetailPage.Master>
  <MasterDetailPage.Detail>
    <NavigationPage>
      <x:Arguments>
        <ContentPage>
        </ContentPage>
      </x:Arguments>
    </NavigationPage>
  </MasterDetailPage.Detail>
</MasterDetailPage>
  

При запуске проекта Windows Phone 8.1 (WinRT, а не Silverlight) у меня возникает следующее исключение:

E_UNKNOWN_ERROR

Ошибка HRESULT E_FAIL был возвращен из вызова COM-компонента.

Ответ №1:

Проблема в том, что вам НУЖНО указать пути к значкам для MasterDetailPage.Главная страница и для ToolbarIcon. Дополнительно для MasterDetailPage.На главной странице необходимо указать свойство Title.

Вот исправленные примеры кода:

 <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="TestApp.Views.TestView">
  <ContentPage.ToolbarItems>
    <ToolbarItem Text="{Binding ToolbarItemText}" Command="{Binding ToolbarItemCommand}" Order="Default" Priority="0">
      <ToolbarItem.Icon>
        <OnPlatform x:TypeArguments="FileImageSource"
               Android="my-icon"
               WinPhone="Assets/my-icon.png" />
      </ToolbarItem.Icon>
    </ToolbarItem>
  </ContentPage.ToolbarItems>
  <ContentPage.Content>
  </ContentPage.Content>
</ContentPage>
  

и

 <MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="TestApp.Views.Test2View">
  <MasterDetailPage.Master>
    <ContentPage Title="Currencies">
      <ContentPage.Icon>
        <OnPlatform x:TypeArguments="FileImageSource"
               Android="my-icon"
               WinPhone="Assets/my-icon.png" />
      </ContentPage.Icon>
    </ContentPage>
  </MasterDetailPage.Master>
  <MasterDetailPage.Detail>
    <NavigationPage>
      <x:Arguments>
        <ContentPage>

        </ContentPage>
      </x:Arguments>
    </NavigationPage>
  </MasterDetailPage.Detail>
</MasterDetailPage>