ListView
アイテムをユーザーコントロール内にバインドしたいと思います。このリスト内にカスタム形式のテキストを表示します。UWP:User Control ListView DataTemplateデータ型バインド
ユーザーコントロールなしでこれを実行しました。したがって、次のコードはうまく働いていた:
<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>
次は私がこのリストビュー
<StackPanel Orientation="Horizontal" HorizontalAlignment="left">
<ListView ItemsSource="{Binding Path=.}">
<ListView.ItemTemplate>
<DataTemplate>
<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="{Binding 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="{Binding 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>
のためのユーザーコントロールを作成しようとした私は、このビューのDataContextのセット
this.WeatherForecastView.DataContext = this.WUWeatherViewModel.Forecast;
しかし、どのようにDataTemplateのデータ型を定義できますか? ListViewのItemSourceのバインディングは正しいですか?
のItemsSource = "{バインディングWeatherForecast}"、DataTyp eはxにのみ必要です:バインディングをコンパイル時に作成し、バインドするオブジェクトのタイプを知る必要があるためバインドを必要としません。バインディング原因は現在のDataContextに応じて実行時に解決されます実際のタイプは – RTDev