[Grid.IsSharedSizeScope Windows 8等效项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Grid.IsSharedSizeScope Windows 8等效项相关的知识,希望对你有一定的参考价值。
在Windows 8 / RT XAML中,是否存在与WPF Grid.IsSharedSizeScope
等效的简单(非自定义代码)?
我将ListViewItem
分为3个水平部分,并且需要将这3列与所有绑定的ListViewItem
对齐(每列最宽)。
答案
因为那是wpf的,所以我找到了Metro解决该问题的方法。请将整个代码粘贴在这里。 :)
<Page.Resources>
<DataTemplate x:Key="DataTemplate1" >
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="Gray">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TextBlock Text="{Binding Name1}"/>
</StackPanel>
<StackPanel Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TextBlock Text="{Binding Name2}"/>
</StackPanel>
<StackPanel Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TextBlock Text="{Binding Name3}"/>
</StackPanel>
</Grid>
</DataTemplate>
</Page.Resources>
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<ListView Name="MyList" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" VerticalAlignment="Stretch" Background="Yellow" ItemTemplate="{StaticResource DataTemplate1}">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemsPanel>
<ItemsPanelTemplate
<!-- Here is the panel that will contain the items -->
<StackPanel Orientation="Vertical" HorizontalAlignment="Stretch" Background="Pink" VerticalAlignment="Stretch"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</Grid>
和后面的代码。只是尝试不使用MVVM
这里是cs
List<test> li = new List<test>();
/// <summary>
/// Invoked when this page is about to be displayed in a Frame.
/// </summary>
/// <param name="e">Event data that describes how this page was reached. The Parameter
/// property is typically used to configure the page.</param>
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
for (int i = 0; i < 10; i++)
{
li.Add(new test()
{
Name1 = "Anobik1" + i.ToString(),
Name2 = "Anobik1" +i.ToString(),
Name3 = "Anobik1" +i.ToString()
});
}
MyList.ItemsSource = li;
}
和我绑定的类如下
class test
{
public string Name1 { get; set; }
public string Name2 { get; set; }
public string Name3 { get; set; }
}
希望这会有所帮助。
好,最后一个答案我没有编辑,因为这太长了,我想展示我正在研究的整个演示,以便使您受益。
另一答案
这是一个示例代码,如何在listview中划分堆栈面板
<ListView Name="MyList" ItemsSource="{Binding Path=MeasuringDeviceCommunicators}" >
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<!-- Here is the panel that will contain the items -->
<StackPanel Orientation="Vertical" Width="{Binding ActualWidth, ElementName= MyList}" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate >
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" ></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></StackPanel>
<StackPanel Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></StackPanel>
<StackPanel Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></StackPanel>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
尝试一下,您的内容将进入三个堆栈面板。决定列表视图中项目方向的堆栈面板已设置为符合父级宽度,而网格已拉伸为符合父级宽度。
以上是关于[Grid.IsSharedSizeScope Windows 8等效项的主要内容,如果未能解决你的问题,请参考以下文章