RunningCSharp

MS系開発者による、雑多な記事。記事は所属企業とは関係のない、個人の見解です。

Xamarin:勉強会で学んだことの雑記

4/10(日)に、「業務系システム開発勉強会」にお邪魔しまして、初めてXamarinでのコーディングを行いました。 当日はエクセルソフト株式会社の田淵氏やイメージ情報開発株式会社の皆様には特にお世話になりました。

ここぞとばかりに質問ばかりしてしまい、申し訳ありませんでした…

ほとんどWPFxamlを扱う感覚できるのですが、一部WPFと少し違う個所もあり、質問させていただいた部分を以下に記載してみました。

1:DataTemplateを書く際、「ViewCell」というタグを挟む必要がある。

<ListView ItemsSource="{Binding Items}">
  <ListView.ItemTemplate>
    <DataTemplate>
      <ViewCell>
        <StackLayout Orientation="Horizontal">
          <Button Command="{Binding MyCommand}" />
          <Label Text="{Binding Detail}" />
        </StackLayout>
      </ViewCell>
    </DataTemplate>
  </ListView.ItemTemplate>
</ListView>

StackLayoutはStackPanelと同義。左記のように、若干のコントロール名変更はある模様です。

2:DataTriggerを書く際、「TargetType」を書く必要がある。

<Button.Style>
  <Style TargetType="Button">
    <Setter Property="Text" Value ="未選択" />
    <Setter Property="BackgroundColor" Value="Red" />
    <Style.Triggers>
      <DataTrigger TargetType="Button" Binding="{Binding IsChecked}" Value="True">
        <Setter Property="Text" Value ="選択" />
        <Setter Property="BackgroundColor" Value="Green" />
      </DataTrigger>
    </Style.Triggers>
  </Style>
</Button.Style>

あとDataContextプロパティに相当するプロパティはBindingContextみたいです。 INotifyPropertyChangedインターフェースを継承したクラスと普通にバインド出来て、MVVMも今まで通りに扱えそうです。

何よりも、xamlAndroid/iOS開発が出来る事に感動しました。