Xaml UWP-我可以将数据模板中的文本块绑定到网格列';它外面有多宽?
对于UWP来说相对较新,是否可以将Xaml UWP-我可以将数据模板中的文本块绑定到网格列';它外面有多宽?,xaml,uwp,Xaml,Uwp,对于UWP来说相对较新,是否可以将DataTemplate(用于列表视图中的ItemTemplate)的TextBlock绑定到其外部的列,或者是否有任何方法将DataTemplate的网格列宽度设置为“MainGrid”的列定义宽度的大小?下面的代码显示了我试图实现的目标 <Grid x:Name="MainGrid"> <Grid.ColumnDefinitions> <ColumnDefinition x:Name="Column1" Wi
DataTemplate
(用于列表视图中的ItemTemplate
)的TextBlock
绑定到其外部的列,或者是否有任何方法将DataTemplate的网格列宽度设置为“MainGrid”的列定义宽度的大小?下面的代码显示了我试图实现的目标
<Grid x:Name="MainGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="Column1" Width="*"/>
<ColumnDefinition x:Name="Column2" Width="8*"/>
<ColumnDefinition x:Name="Column3" Width="*"/>
</Grid.ColumnDefinitions>
<ListView Name="recordList" ItemsSource="{x:Bind _recordingList, TargetNullValue=0}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:Recording">
<Grid>
<TextBlock Grid.Column="{Binding Column1}" Name="TextBlock_Time" Text="{x:Bind Time}"/>
<TextBlock Grid.Column="{Binding Column2}" Name="TextBlock_Message" Text="{x:Bind Message}"/>
<TextBlock Grid.Column="{Binding Column3}" Name="TextBlock_Type" Text="{x:Bind Type}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
在下图中,我假设红线就是窗口。本质上是试图让列适应窗口大小的变化
只需将列移动到模板本身即可 DataTemplate是一个描述内容和位置的方案。因为它在ItemTemplate中,所以它意味着它适用于每个项目
<ListView Name="recordList" ItemsSource="{x:Bind _recordingList, TargetNullValue=0}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:Recording">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="Column1" Width="*" />
<ColumnDefinition x:Name="Column2" Width="8*" />
<ColumnDefinition x:Name="Column3" Width="*" />
</Grid.ColumnDefinitions>
<TextBlock
Name="TextBlock_Time"
Grid.Column="0"
Margin="20"
Foreground="Red"
Text="{x:Bind Time}" />
<TextBlock
Name="TextBlock_Message"
Grid.Column="1"
Margin="20"
Foreground="Green"
Text="{x:Bind Message}" />
<TextBlock
Name="TextBlock_Type"
Grid.Column="2"
Margin="20"
Foreground="LightBlue"
Text="{x:Bind Type}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
这会让你的物品看起来像这样
查看文档,因为它很好地解释了它。模板中有模板。因此,您可以模板化容器(它应该如何显示项目)和项目(每个项目应该是什么样子)
记住HorizontalAlignment=“Stretch”等,因为这意味着文本块(或网格)将占用其所有可用空间(水平)。修改一下它,你就会掌握它是如何工作的。你只需要将列移动到模板本身 DataTemplate是一个描述内容和位置的方案。因为它在ItemTemplate中,所以它意味着它适用于每个项目
<ListView Name="recordList" ItemsSource="{x:Bind _recordingList, TargetNullValue=0}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:Recording">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="Column1" Width="*" />
<ColumnDefinition x:Name="Column2" Width="8*" />
<ColumnDefinition x:Name="Column3" Width="*" />
</Grid.ColumnDefinitions>
<TextBlock
Name="TextBlock_Time"
Grid.Column="0"
Margin="20"
Foreground="Red"
Text="{x:Bind Time}" />
<TextBlock
Name="TextBlock_Message"
Grid.Column="1"
Margin="20"
Foreground="Green"
Text="{x:Bind Message}" />
<TextBlock
Name="TextBlock_Type"
Grid.Column="2"
Margin="20"
Foreground="LightBlue"
Text="{x:Bind Type}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
这会让你的物品看起来像这样
查看文档,因为它很好地解释了它。模板中有模板。因此,您可以模板化容器(它应该如何显示项目)和项目(每个项目应该是什么样子)
记住HorizontalAlignment=“Stretch”等,因为这意味着文本块(或网格)将占用其所有可用空间(水平)。修改一下它,你就会了解它是如何工作的。我想你希望
listviewitem
能够扩展到窗口大小。要实现这一点,您需要在ItemContainerStyle
中将listviewitem的HorizontalContentAlignment
设置为stretch
我想您希望将
listviewitem
拉伸到窗口大小。要实现这一点,您需要在ItemContainerStyle
中将listviewitem的HorizontalContentAlignment
设置为stretch
您到底想实现什么目标?对我来说,您似乎希望以某种方式表示数据。你能画一张图吗?我的目标是一张包含时间、消息和消息类型的表。我想让它们适应窗户的大小。我会为你制作一个图像。你到底想实现什么?对我来说,您似乎希望以某种方式表示数据。你能画一张图吗?我的目标是一张包含时间、消息和消息类型的表。我想让它们适应窗户的大小。我将为您制作一个图像。非常感谢,我忘记了设置项目容器样式,使用上面的答案解决了我的问题。非常感谢,我忘记了设置项目容器样式,使用上面的答案解决了我的问题。