我在UWP的datatemplate中有一个带有togglebuttons的Listview。我已将listview配置为itemwrapgrid。我试图根据切换按钮内容长度为项目分配不同的宽度。任何人都可以帮我这样做。
<ListView x:Name="lstVw1" IsMultiSelectCheckBoxEnabled="True" Margin="0,20,0,0">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid Orientation="Horizontal" Width="Auto" HorizontalAlignment="Stretch"></ItemsWrapGrid>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<ToggleButton Style="{StaticResource ButtonStyle}" Content="{Binding ItemText}" Click="ToggleButton_Click">
</ToggleButton>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<ContentPresenter Padding="5"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
</ListView>
上面的xaml在列表中给出了等大小的切换按钮
答案 0 :(得分:1)
我会使用UWP Community Toolkit中的WrapPanel。您可以下载nuget包,然后将ListView的ItemsPanel更改为WrapPanel
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<wrapPanel:WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
请注意,WrapPanel被意外地放入Microsoft.Toolkit.Uwp.Controls.WrapPanel
命名空间,因此您需要在XAML中声明wrapPanel命名空间
xmlns:wrapPanel="using:Microsoft.Toolkit.Uwp.Controls.WrapPanel"
答案 1 :(得分:0)
我为上面创建了一个自定义的包装面板。
答案 2 :(得分:0)
默认情况下,它的工作原理与此类似 - ItemTemplate
将展开以适应内容。您可能需要将ItemsStackPanel
用作ItemsPanelTemplate
。
你做错了就是这一行,你应该删除它:
<Setter Property="HorizontalContentAlignment" Value="Stretch" />