ListView 调整大小而不考虑列定义

发布于 2024-12-26 11:03:43 字数 1410 浏览 1 评论 0原文

我有一个非常简单的 XAML 窗口:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <ContentControl Content="{Binding Path=Item}"  ContentTemplate="{StaticResource aaaa}" Grid.Row="1"/>
    <ListView   ItemsSource="{Binding Path=ItemList}" ItemTemplate="{StaticResource aaaa}" HorizontalContentAlignment="Stretch"/>
</Grid>

其中 ContentControl 和 ListView 具有相同的模板:

<DataTemplate DataType="{x:Type src:ItemType}" x:Key="aaaa">
        <Grid ShowGridLines="True" Height="30">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>
            <TextBlock  Name="resizinglabel" Text="this is a very long text that has to be trimmed"  />
            <TextBlock Name="fixedLabel" Text="always to the left" Grid.Column="1" Background="Red" />
        </Grid>
    </DataTemplate>

但是当我调整窗口大小时,列表视图似乎有一个奇怪的行为:

在调整大小的关键点之前: before

之后 调整大小的临界点: after

简而言之,我希望正确的标签始终在右侧可见。我也尝试了 isSharedSizeScope 属性,但 id 不起作用...所以问题是:我必须做什么才能使列表视图表现得像内容控件?

提前致谢!

I have this very simple XAML window:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <ContentControl Content="{Binding Path=Item}"  ContentTemplate="{StaticResource aaaa}" Grid.Row="1"/>
    <ListView   ItemsSource="{Binding Path=ItemList}" ItemTemplate="{StaticResource aaaa}" HorizontalContentAlignment="Stretch"/>
</Grid>

where the ContentControl and the ListView have the same template:

<DataTemplate DataType="{x:Type src:ItemType}" x:Key="aaaa">
        <Grid ShowGridLines="True" Height="30">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>
            <TextBlock  Name="resizinglabel" Text="this is a very long text that has to be trimmed"  />
            <TextBlock Name="fixedLabel" Text="always to the left" Grid.Column="1" Background="Red" />
        </Grid>
    </DataTemplate>

But when I resize the window the listview seems to have a weird behaviour:

Before the critical point of resizing:
before

After The critical point of resizing:
after

in a few words i want the right label to be always visible on the right. I tried also with the isSharedSizeScope property but id doesn't works... So the question is: what I have to do to make the listview behaving like the content control?

Thanks in advance!

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

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

发布评论

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

评论(1

蓝戈者 2025-01-02 11:03:43

如果 ScrollBar 的内容太大而无法在屏幕上显示,ListViews 将自动添加 ScrollBar。禁用水平滚动条,它应该可以工作。

<ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" />

ListViews will automatically add ScrollBars if their content is too large to fit on the screen. Disable the Horizontal ScrollBar and it should work.

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