简体   繁体   中英

UWP ListView DataTemplate Bindings

My ViewModel

BookingTakerViewModel

has a property

public List<string> Vias {get;set;} 

I am wanting to bind a ListView with a DataTemplate but I can not find out how to do it. This is my code and it is throwing this error when it runs:

 "Unable to cast object of type 'System.String' to type 'UI_Test_1.ViewModels.BookingTakerViewModel'."

I thought that the x:DataType should reference the class and in this case it is my Viewmodel.I presume that the x:Bind Vias is wrong beacuase this is a List so lost as to what to do.

<ListView
    Name="viasList"
    Width="300"
    BorderBrush="Black"
    BorderThickness="5"
    ItemsSource="{x:Bind viewModel.Vias, Mode=OneWay}">
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                  <Setter Property="MinHeight" Value="1" />
                   <Setter Property="MaxHeight" Value="15" />
            </Style>
            </ListView.ItemContainerStyle>
               <ListView.ItemTemplate>
                    <DataTemplate x:Name="dt" x:DataType="viewmodels:BookingTakerViewModel">
                        <Grid>
                            <TextBlock FontSize="14" Text="{x:Bind Vias, Mode=OneWay}" />
                        </Grid>
                    </DataTemplate>
             </ListView.ItemTemplate>
</ListView>

The Vias are intantiated with data so it's not that which is causing a NullReference Exception. I believe the XAML is incorrect.

Probably you are looking for something like this?

<ListView.ItemTemplate>
    <DataTemplate x:Name="dt" x:DataType="x:String">
        <Grid>
            <TextBlock FontSize="14" Text="{x:Bind}" />
        </Grid>
    </DataTemplate>
</ListView.ItemTemplate>

Inside the data template, the context of {x:Bind} is the templated object, which is a string item from the collection you set in ItemsSource .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM