Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UWP:用户控件ListView数据模板数据类型绑定_C#_Xaml_Uwp - Fatal编程技术网

C# UWP:用户控件ListView数据模板数据类型绑定

C# UWP:用户控件ListView数据模板数据类型绑定,c#,xaml,uwp,C#,Xaml,Uwp,我想在用户控件中绑定一个ListView项。在此列表中显示自定义格式的文本 我在没有用户控制的情况下完成了这项工作。因此,以下代码运行良好: <StackPanel Grid.Row="2" Grid.ColumnSpan="2" Orientation="Horizontal" HorizontalAlignment="left"> <ListView ItemsSource="{x:Bind WeatherViewModel.WeatherForec

我想在用户控件中绑定一个
ListView
项。在此列表中显示自定义格式的文本

我在没有用户控制的情况下完成了这项工作。因此,以下代码运行良好:

<StackPanel Grid.Row="2" Grid.ColumnSpan="2" Orientation="Horizontal" HorizontalAlignment="left">
            <ListView ItemsSource="{x:Bind WeatherViewModel.WeatherForecast}" >
                <ListView.ItemTemplate>
                    <DataTemplate x:DataType="local:WeatherForecast">
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="30"/>
                                <RowDefinition Height="*" />
                                <RowDefinition Height="*" />
                            </Grid.RowDefinitions>

                            <!-- temperature -->
                            <Grid Grid.Row="0">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="47"/>
                                    <ColumnDefinition Width="10"/>
                                    <ColumnDefinition Width="47"/>
                                </Grid.ColumnDefinitions>
                                <TextBlock Text="{x:Bind MaxTemperature}" 
                                           FontSize="16" 
                                           Grid.Column="0"                                            
                                           FontFamily="Sergoe UI"
                                           HorizontalAlignment="Right"
                                           VerticalAlignment="Center"
                                           Style="{StaticResource BasicTextBlock}"/>
                                <TextBlock Text="|" 
                                           FontSize="16" 
                                           Grid.Column="1"
                                           FontFamily="Sergoe UI"
                                           HorizontalAlignment="Center"
                                           VerticalAlignment="Center"
                                           Style="{StaticResource BasicTextBlock}"/>
                                <TextBlock Text="{x:Bind MinTemperature}" 
                                           FontSize="16" 
                                           Grid.Column="2"
                                           FontFamily="Sergoe UI"
                                           HorizontalAlignment="left"
                                           VerticalAlignment="Center"
                                           Style="{StaticResource BasicTextBlock}"/>
                             </Grid>
                            </TextBlock>
                        </Grid>
                    </DataTemplate>
                </ListView.ItemTemplate>
                <ListView.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Horizontal"></StackPanel>
                    </ItemsPanelTemplate>
                </ListView.ItemsPanel>
              </ListView>
        </StackPanel>
但是如何定义DataTemplate的数据类型呢? ListView的ItemSource的绑定是否正确

ListView的ItemSource的绑定是否正确

是的,前提是StackPanel的DataContext(可能与父UserControl相同)是IEnumerable

ItemsSource=“{Binding}”
ItemsSource=“{Binding Path=.}”
的缩写

但是如何定义DataTemplate的数据类型呢

尽管未编译的绑定不需要,但您可以如下指定DataTemplate的数据类型:

<DataTemplate x:DataType="local:WeatherForecast">

ItemsSource=“{Binding WeatherForecast}”,数据类型仅对x:Bind是必需的,因为它在编译时创建绑定,并且需要知道要绑定到的对象的类型,您不需要绑定它,因为它在运行时被解析,根据当前的DataContext,无论实际类型是什么,问题在于ItemSource绑定。代码ItemsSource=“{Binding}”有效,而ItemsSource=“{Binding Path=.}”无效。
this.WeatherForecastView.DataContext = this.WUWeatherViewModel.Forecast;
<DataTemplate x:DataType="local:WeatherForecast">
<Page
    x:Class="App1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App1"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <ListView x:Name="lv" ItemsSource="{Binding}">
            <ListView.ItemTemplate>
                <DataTemplate x:DataType="local:WeatherForecast">
                    <TextBlock Text="{Binding Name}" />
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>
</Page>
namespace App1
{
    public class WeatherForecast
    {
        public string Name { get; set; } = "wf";
    }
}