【问题标题】:Windows Store app wrapping checkbox textWindows 应用商店应用包装复选框文本
【发布时间】:2014-04-20 17:20:12
【问题描述】:

我有一个布局,其中有四个复选框,如果它们适合,我想以水平排列显示它们,如果它们不将它们包装到另一行。

我在 ListView 中使用 WrapGrid,如下所示:

<ListView  Width="Auto">
    <ListView.ItemsPanel>
      <ItemsPanelTemplate>
         <WrapGrid Orientation="Horizontal" MaximumRowsOrColumns="4"/>
      </ItemsPanelTemplate>
    </ListView.ItemsPanel>
    <CheckBox IsChecked="True" Content="Short text"/>
    <CheckBox IsChecked="True" Content="Longer text (with explanation)" />
    <CheckBox  Content="Some other longer stuff" />
    <CheckBox  Content="ABCDEDFGHIJKLMNOPQRSTUVWXYZ"/>
</ListView>

它几乎表现得像它应该的那样,但由于某种原因,它从我的复选框中剪切文本,将它们设置为与第一个具有相同的宽度(在我的示例中为Short text)。我可以通过首先使用最长文本的复选框来解决这个问题,但我真的很想让 ListView 自己找出最宽项目的宽度。这可能吗?

【问题讨论】:

  • 我猜WrapGrid 不可能,因为它总是选择第一个项目大小。你可以阅读更多关于它的信息here
  • 把它变成一个答案,我会接受它。
  • 转换为答案。

标签: wpf xaml checkbox windows-store-apps


【解决方案1】:

使用 WrapPanel 并在 ListView 上设置 ScrollViewer.HorizontalScrollBarVisibility="Disabled" 以便在元素无法放入时自动换行给定空间。

<ListView Width="Auto" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Horizontal"/>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
    <CheckBox IsChecked="True" Content="Short text"/>
    <CheckBox IsChecked="True" Content="Longer text (with explanation)" />
    <CheckBox  Content="Some other longer stuff" />
    <CheckBox  Content="ABCDEDFGHIJKLMNOPQRSTUVWXYZ"/>
</ListView>

我会将上述内容保留在这里,以便如果有人偶然发现这篇关于 WPF 的帖子,上述解决方案将适用于这种情况。


更新适用于 Windows 应用商店:

WrapGrid 不可能,因为它总是选择第一个项目大小。你可以阅读更多关于它的信息here

【讨论】:

  • WrapPanel 很遗憾不适用于 Windows 应用商店应用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
  • 2015-10-17
  • 2016-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-31
相关资源
最近更新 更多