Windows 8 Grid.IsSharedSizeScope适用于Windows 8

Windows 8 Grid.IsSharedSizeScope适用于Windows 8,windows-8,windows-runtime,winrt-xaml,Windows 8,Windows Runtime,Winrt Xaml,在Windows 8/RT XAML中是否有任何类型的简单(非自定义编码)等价于WPFsGrid.IsSharedSizeScope 我有ListViewItems,它们被分为3个水平部分,这3列需要与所有绑定的ListViewItem对齐(每个列的宽度最宽),下面是如何在listview中划分stackpanels的示例代码 尝试一下,你的内容将进入三个堆栈面板。虽然决定列表视图中项目方向的stackpanel已设置为满足父项宽度,而网格已拉伸以满足父项宽度。因为这是针对wpf的,所以我找

在Windows 8/RT XAML中是否有任何类型的简单(非自定义编码)等价于WPFs
Grid.IsSharedSizeScope


我有
ListViewItem
s,它们被分为3个水平部分,这3列需要与所有绑定的
ListViewItem

对齐(每个列的宽度最宽),下面是如何在listview中划分stackpanels的示例代码



尝试一下,你的内容将进入三个堆栈面板。虽然决定列表视图中项目方向的stackpanel已设置为满足父项宽度,而网格已拉伸以满足父项宽度。

因为这是针对wpf的,所以我找到了解决该问题的Metro解决方案。我会将整个代码粘贴到这里。:)

希望这会有所帮助


好的,最后一个答案我没有编辑,因为这有点太长了,我想展示我正在研究的整个演示,以便让您受益。

这很有希望,但它似乎只在WPF中有效,而不是在Silverlight或WinRT中。在SL和WRT页面(比如)上,它都说
为了元素名绑定的目的,ActualWidth在更改时不会发布更新(由于其异步和运行时计算的性质)。不要尝试将ActualWidth用作ElementName绑定的绑定源。如果您有需要基于实际宽度进行更新的场景,请使用SizeChanged处理程序。
+1进行更新。我是否也尝试使用metro xaml?metro xaml=winrt。我在那里试过了,但不幸的是没用。好吧,我看看能不能找到一个休息的地方:)我会让你知道的。:)托德:你可以通过地铁解决方案:)为我工作。如果还需要修改,请告诉我:)哇,太棒了!正是我需要的。非常感谢Anobik!非常感谢您的帮助:)
<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>
        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; }
}