我是 WinRT 的新手,如果这是一个愚蠢的问题,我深表歉意。我创建了以下 ListView:
<ListView x:Name="MyListView1"
Grid.Row="1"
Margin="120,300,0,0"
Width="500"
HorizontalAlignment="Left">
<ListViewItem Background="DodgerBlue">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="300" />
</Grid.ColumnDefinitions>
<TextBlock Text="hardcoded value 1" Grid.Column="0"></TextBlock>
<TextBlock Text="hardcoded value 2" Grid.Column="1"></TextBlock>
</Grid>
</ListViewItem>
</ListView>
这看起来是我想要的样子,如果您单击一个项目,它将选择整行。但是,如果我将它移到 DataTemplate 中,它看起来就不一样了,您不能再单击整行。(如果我添加一个目标类型为 ListViewItem 的 ItemContainerStyle 并将背景设置为黄色,它将填充它,因此它与硬编码的 ListItem 大小相同,但您只能单击黄色轮廓来选择它。)这是代码:
<ListView x:Name="MyListView2"
ItemTemplate="{StaticResource MyTemplate}"
ItemsSource="{Binding MyData}"
Grid.Row="1"
Margin="120,0,0,0"
Width="500"
HorizontalAlignment="Left">
</ListView>
在 StandardStyles.xaml 中:
<DataTemplate x:Key="MyTemplate">
<ListViewItem Background="DodgerBlue">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200" />
<ColumnDefinition Width="300" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding MyDataOne}" Grid.Column="0"></TextBlock>
<TextBlock Text="{Binding MyDataTwo}" Grid.Column="1"></TextBlock>
</Grid>
</ListViewItem>
</DataTemplate>
我不明白为什么它们看起来/工作不一样-绑定时不应该填充完全相同的代码吗?我需要做什么才能使其工作?