个人评论
这实际上已经驾驶我有点糊涂;我只是似乎不能得到预期的结果,所以任何帮助这是非常感谢。
问题陈述
我在NavigationViewItem中有一个ListView,因为我希望能够在Shell视图中使用项目重新排序和拖放功能,而目前NavigationView控件并不真正支持这一点。
我遇到的问题是,当NavigationView控件在它的最小化视图(IsPaneOpen="false"
)中时,ListView不遵守宽度更改,子项也不遵守ListView宽度。
Tldr:当NavigationView Control IsPaneOpen=“false”发生时,按钮只显示图像而不是文本,并且它仍然居中,适当的填充/边距圆角,就像NavigationViewItem一样,即其中之一:
<NavigationViewItem
x:Uid="Shell_Main"
Icon="Target" />
字符串
基本上是这样的:
x1c 0d1x的数据
看起来像这样:
的
我所尝试的
我试过使用ItemContainerStyle,但这会删除样式和选择指示符。
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
型
我也试过手动设置所有东西的宽度,这样我至少可以看到什么可以复制我试图实现的东西,这也是不可能的。
到目前为止,我已经看过的一些内容:
- How to dynamically scale column width in UWP ListView with DataTemplate like table
- https://github.com/microsoft/microsoft-ui-xaml/issues/3682的
- WinUI list control that allows for dynamic item size, reordering, and virtualization的
XML
<NavigationViewItem Visibility="{x:Bind ViewModel.ShowSC, Converter={StaticResource BoolToVisibilityConverter}, Mode=OneWay}">
<NavigationViewItem.Template>
<ControlTemplate>
<Border Width="auto" Height="auto">
<ContentPresenter />
</Border>
</ControlTemplate>
</NavigationViewItem.Template>
<Grid
x:Name="scOuterGrid"
MinHeight="100"
HorizontalAlignment="Stretch">
<ListView
x:Name="lstvSC"
HorizontalAlignment="Stretch"
AllowDrop="True"
CanDragItems="True"
CanReorderItems="True"
DragItemsCompleted="lstvSpotlightChats_DragItemsCompleted"
DragItemsStarting="lstvSpotlightChats_DragItemsStarting"
ItemsSource="{x:Bind ViewModel.SCC, Mode=OneWay}"
SelectedItem="{x:Bind ViewModel.SelectedSC, Mode=TwoWay}"
SelectionChanged="lstvSC_SelectionChanged"
SelectionMode="Single"
SizeChanged="lstvSC_SizeChanged">
<ListView.ItemTemplate>
<DataTemplate x:DataType="models:CM">
<Grid
HorizontalAlignment="Stretch"
ColumnSpacing="14"
ToolTipService.ToolTip="{x:Bind MenuItemName}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<BitmapIcon
Grid.Column="0"
Width="24"
Margin="-4,0,0,0"
UriSource="{x:Bind IP, Converter={StaticResource SCIconConverter}}" />
<TextBlock
Grid.Column="1"
VerticalAlignment="Center"
Text="{x:Bind MenuItemName}"
Visibility="Collapsed" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.Header>
<TextBlock
x:Name="lstviewSH"
Margin="15,15,0,15"
FontSize="14"
FontWeight="SemiBold"
Foreground="{ThemeResource TextBoxForegroundHeaderThemeBrush}"
OpticalMarginAlignment="TrimSideBearings"
Text="SC" />
</ListView.Header>
<i:Interaction.Behaviors>
<i:BehaviorCollection>
<core:EventTriggerBehavior EventName="DragItemsStarting">
<core:InvokeCommandAction Command="{x:Bind ViewModel.OnSpotlightDragItemsStartingCommand}" />
</core:EventTriggerBehavior>
<core:EventTriggerBehavior EventName="DragItemsCompleted">
<core:InvokeCommandAction Command="{x:Bind ViewModel.OnSpotlightDragItemsCompletedCommand}" />
</core:EventTriggerBehavior>
<core:EventTriggerBehavior EventName="DragOver">
<core:InvokeCommandAction Command="{x:Bind ViewModel.OnSpotlightDragOverCommand}" />
</core:EventTriggerBehavior>
<core:EventTriggerBehavior EventName="Drop">
<core:InvokeCommandAction Command="{x:Bind ViewModel.OnSpotlightDropCommand}" />
</core:EventTriggerBehavior>
<core:EventTriggerBehavior EventName="SelectionChanged">
<core:InvokeCommandAction Command="{x:Bind ViewModel.OnChatSelectedNavigateCommand}" />
</core:EventTriggerBehavior>
</i:BehaviorCollection>
</i:Interaction.Behaviors>
</ListView>
<Grid
x:Name="dropGridSpotlight"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
AllowDrop="True"
Visibility="Collapsed">
<Grid
Margin="4"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="{ThemeResource AcrylicBackgroundFillColorBaseBrush}"
BorderBrush="DarkGoldenrod"
BorderThickness="1"
CornerRadius="5"
Opacity="0.8" />
<BitmapIcon
x:Name="dropIconSpotlight"
Width="32"
Height="32"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Foreground="DarkGoldenrod"
UriSource="ms-appx:///Assets/Icons/torch-64.png" />
<i:Interaction.Behaviors>
<i:BehaviorCollection>
<core:EventTriggerBehavior EventName="DragOver">
<core:InvokeCommandAction Command="{x:Bind ViewModel.OnSpotlightDragOverCommand}" />
</core:EventTriggerBehavior>
<core:EventTriggerBehavior EventName="Drop">
<core:InvokeCommandAction Command="{x:Bind ViewModel.OnSpotlightDropCommand}" />
</core:EventTriggerBehavior>
</i:BehaviorCollection>
</i:Interaction.Behaviors>
</Grid>
</Grid>
</NavigationViewItem>
型
1条答案
按热度按时间xiozqbni1#
通常情况下,在我给予的确切时刻,在试图解决这个问题后,我抓了几天我的头,我做了一个深入的潜水到实时视图树在VS2022,而调试项目,并找到了一些属性的ListViewItem需要改变,使其完全符合我的要求。
然而很明显,当我设置它们时,它删除了
ListViewItem
控件的默认样式。然后我偶然发现了样式BasedOn
的概念.启示。字符串
上面的样式基本上继承了默认的
ListViewItem
样式,并允许您简单地修改几个属性,而不会丢失其他样式属性。的数据
所以,只是在关闭的机会,任何其他人遇到同样的问题,在这里,它是在所有的荣耀。