Is it possible to mix OnIdiom and OnPlatform in XAML (Xamarin.Forms)?

mobile-development, mobile-devices, xamarin, xamarin.forms, xaml

Solution

`OnIdiom`, just like `OnPlatform` is an object you have to declare. In your case, you're setting `OnIdiom.Phone` property to an object that doesn't have those.

Your Xaml should look more like:

<ColumnDefinition>
  <ColumnDefinition.Width>
    <OnIdiom x:TypeArguments="GridLength">
      <OnIdiom.Phone>
        <OnPlatform x:TypeArguments="GridLength" iOS="*" Android="*" WinPhone="100" />
      </OnIdiom.Phone>
      <OnIdiom.Tablet>
        <OnPlatform x:TypeArguments="GridLength" iOS="*" Android="*" WinPhone="200" />
      </OnIdiom.Tablet>
    </OnIdiom>
  </ColumnDefinition.Width>
</ColumnDefinition>

Problem

For UWP I need a different size for the width of a column in a `Grid`. Additionally, the value should be different on tablet and on smartphone. The following code crashes the app ``` <ColumnDefinition> <ColumnDefinition.Width> <OnIdiom.Phone> <OnPlatform x:TypeArguments="GridLength" iOS="*" Android="*" WinPhone="100" /> </OnIdiom.Phone> <OnIdiom.Tablet> <OnPlatform x:TypeArguments="GridLength" iOS="*" Android="*" WinPhone="200" /> </OnIdiom.Tablet> </ColumnDefinition.Width> </ColumnDefinition> ``` with Type OnIdiom.Phone not found in xmlns http://xamarin.com/schemas/2014/forms The code is in a `ViewCell`. So I can't use an additional `ResourceDictionary` and also `OnSizeAllocated()` is not available in the code behind file. Is it possible to use `OnIdiom` and `OnPlatform` together?

Original source