在 XAML 中设置相对列宽。 '0.5*'字符串无法转换为长度

发布于 2024-11-06 22:48:02 字数 1700 浏览 1 评论 0原文

这是 XAML:

<ListBox Grid.Row="1" x:Name="lstGames" Background="#343434" >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid ShowGridLines="True">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition MaxWidth="0.5*"/> //<-----------HERE!
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition />
                </Grid.RowDefinitions>

                <Image Grid.Row="0" Grid.Column="0" Source="{Binding ImageUrl}" Stretch="UniformToFill"/>
                <StackPanel Grid.Row="0" Grid.Column="1">
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="Title:" />
                        <TextBlock Text="{Binding Title}" />
                    </StackPanel>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="Release Date:" />
                        <TextBlock Text="{Binding ReleaseDate}" />
                    </StackPanel>                            
                </StackPanel>  
            </Grid>                    
        </DataTemplate>
    </ListBox.ItemTemplate>            
</ListBox>

我想要的只是第一列最多占窗口总宽度的 35% 左右。我的印象是这种表示法是允许的,但出了点问题,我得到了该异常。

有什么建议吗?

如果我将其更改为仅 Width="0.5*" 那么它会编译并运行,但仍然不会为图片(列)提供统一的宽度:

在此处输入图像描述

Here's the XAML:

<ListBox Grid.Row="1" x:Name="lstGames" Background="#343434" >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid ShowGridLines="True">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition MaxWidth="0.5*"/> //<-----------HERE!
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition />
                </Grid.RowDefinitions>

                <Image Grid.Row="0" Grid.Column="0" Source="{Binding ImageUrl}" Stretch="UniformToFill"/>
                <StackPanel Grid.Row="0" Grid.Column="1">
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="Title:" />
                        <TextBlock Text="{Binding Title}" />
                    </StackPanel>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="Release Date:" />
                        <TextBlock Text="{Binding ReleaseDate}" />
                    </StackPanel>                            
                </StackPanel>  
            </Grid>                    
        </DataTemplate>
    </ListBox.ItemTemplate>            
</ListBox>

All I want is for the first column to at most be around 35% of the total width of the window. I was under the impression that this notation was allowed, but something is wrong and I'm getting that exception fired.

Any suggestions?

If I change it to only Width="0.5*" then it compiles and runs, but still doesn't give the pictures (the columns) a uniform width:

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风向决定发型 2024-11-13 22:48:02

ColumnDefinition.MaxWidth 是双精度值,而不是 GridLength。所以它不可能是一个相对值。但是,由于它是一个依赖属性,因此您可以使用带有参数的转换器将其绑定到窗口的总宽度。

ColumnDefinition.MaxWidth is a double, not a GridLength. So it can't be a relative value. However, since it's a dependency property, you might be able to bind it to the total width of the window, using a converter with a parameter.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文