listviewcanvasdatatemplatewinui-3winui

WinUI 3 ListView Linked To Observablecollection contains Canvases


I am developing a WinUI 3 application which contains a ListView linked to an Observablecollection which contains canvases , the listview displays the names of the canvases via a DataTemplate but the names are not displayed

<StackPanel Grid.Row="1" Orientation="Vertical">
    <ListView x:FieldModifier="public" x:Name="listViewCanvases" Background="SeaGreen" >
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding Path=Canvas.Name}" />
                 </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</StackPanel>
ObservableCollection<Canvas> ocCanvases = new ObservableCollection<Canvas>();
                         
ocCanvases.Add(new Canvas(){Name="AAA"});
             
ocCanvases.Add(new Canvas() { Name = "BBB" });
          
ocCanvases.Add(new Canvas() { Name = "CCC" });
          
listViewCanvases.ItemsSource = ocCanvases;

Solution

  • This should work:

    <StackPanel
        Grid.Row="1"
        Orientation="Vertical">
        <ListView
            x:Name="listViewCanvases"
            x:FieldModifier="public"
            Background="SeaGreen">
            <ListView.ItemTemplate>
                <DataTemplate x:DataType="Canvas">
                    <StackPanel>
                        <TextBlock Text="{x:Bind Name, Mode=OneWay}" />
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackPanel>