繁体   English   中英

在垂直方向上水平拉伸StackPanel中的网格

[英]Horizontally stretch a Grid inside a StackPanel with Vertical orientation

我正在尝试使此侧栏中的网格填充为堆栈面板的侧栏。 根据这个答案,这是不可能做到的。

我的情况略有不同,因为我实际上有一个ListView,其中StackPanel作为ItemsContainer。

我敲了一个简单的例子来演示:

C#

public partial class MainWindow : Window
{
    public List<string> MyList { get; set; }

    public MainWindow()
    {
        InitializeComponent();

        this.MyList = new List<string> { "foo", "bar", "baz" };
        this.DataContext = this;
    }
}

XAML

    <ListView ItemsSource="{Binding MyList}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid  Background="Orange" 
                       HorizontalAlignment="Stretch">
                    <TextBlock Margin="5"                                    
                               Text="{Binding}"></TextBlock>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Background="Yellow"></StackPanel>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
    </ListView>

结果看起来像这样:

在此处输入图片说明

在这里采取的最佳方法是什么? 我希望菜单项绑定到动态列表并水平拉伸。 我还希望避免在网格中硬编码多个RowDefinition,而不要使用StackPanel。 可能吗?

非常感谢

您需要将Horizo​​ntalContentAlignment设置为strech,其默认行为是将左侧的所有内容都弄乱:

        <ListView ItemsSource="{Binding MyList}" HorizontalContentAlignment="Stretch">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid  Background="Orange">
                        <TextBlock Text="{Binding}"></TextBlock>
                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Background="Yellow"></StackPanel>
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
        </ListView>

在此处输入图片说明

PS。 考虑使用ObservableCollection而不是List<String> ,以防您使用MVVM更新这些元素

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM