0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

.NET MAUIのXAML忘備録その2

Posted at

ListViewなどでListViewには表データをバインディングしている場合において(バインディングしている表データではない)ViewModelのプロパティをバインディングするには

例)
ListDataにはこんな形でViewModel内のプロパティとして入っているとします。

ObservableCollection<dataClass> ListData = 
new ObservableCollection<dataClass>()
            {
                new dataClass("data1"),
                new dataClass("data2"),
                new dataClass("data3"),
            };

private string viewModelsProperty;
public string ViewModelsProperty
{
    get => viewModelsProperty; 
    set
    {
        viewModelsProperty = value;
        OnPropertyChanged(nameof(ViewModelsProperty));
    }
}

そのまま👇のようにしても表示できません

<ListView 
    ItemsSource="{Binding ListData}"/> 
    <ListView.ItemTemplate>
        <DataTemplate>
            <Label Text="{Binding ViewModelsProperty"/>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

dataClassのViewModelsPropertyというプロパティであれば表示されます

👇のようにSource={RelativeSource AncestorType=・・・}として指定します

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="XamlSamples.HelloXamlPage"
             xmlns:ViewModels="clr-namespace:AppNameSpace.ViewModels"
             Title="Hello XAML Page">

--省略--
<ListView 
    ItemsSource="{Binding ListData}"/> 
    <ListView.ItemTemplate>
        <DataTemplate>
            <Label Text="{Binding ViewModelsProperty, 
                     Source={RelativeSource AncestorType={x:Type ViewModels:ThisViewModel}}}"/>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

サンプルコードの検証が出来ていません
不具合・修正要望などありましたらコメントお願いします

参考

https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/relative-bindings
:::

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?