WPF ItemTemplate 导致 ListBox 内容大小问题
WPF ItemTemplate Causing ListBox Content Size Issue
在 WPF 项目中,如果我在 XAML 中手动插入项目,我有一个 ListBox
可以正确呈现,例如:
<ListBoxItem>
<Grid Background="#7F271043" Width="200" Height="200">
<Grid.RowDefinitions>
<RowDefinition Height="110" />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Image Grid.Row="0" Source="Logo-40p.png" HorizontalAlignment="Center" Margin="10,10,10,10" />
<TextBlock Grid.Row="1" Text="Test Item" Foreground="White" Margin="10,0,10,0" FontSize="16" VerticalAlignment="Center" />
<local:Rating Grid.Row="2" HorizontalAlignment="Left" Height="24" Margin="10,0,0,0" VerticalAlignment="Center" Width="130" SelectedValue="4" IsReadOnly="True" />
<TextBlock Grid.Row="2" Text="Free" Foreground="#FF969292" Margin="0,0,10,0" FontSize="14" HorizontalAlignment="Right" VerticalAlignment="Center" />
</Grid>
</ListBoxItem>
ListBoxItem
的底部看起来像:
然而,当我将 <ListBoxItem>
换成:
<ListBox.ItemTemplate>
<DataTemplate>
即使我保持其他一切相同,它也会给我的评级控制带来一个我无法修复的尺寸问题(不响应手动尺寸或拉伸设置):
关于如何解决这个问题有什么想法吗? ItemTemplate
/ DataTemplate
是否做了一些可能导致控件不遵守手动设置或由其所在的网格行设置的大小?
已设法解决此问题 - XAML 中手动定义的 ListBoxItem
的行为似乎与 ItemTemplate
/ DataTemplate
.[=22= 的输出不同]
我的评级用户控件有一个指定的设置高度和宽度,它们被 XAML(height/width/stretch)在 ListBoxItem
内但不在 ItemTemplate
内的实现覆盖/ DataTemplate
:
mc:Ignorable="d" Height="750" Width="4070" MouseLeave="UserControl_MouseLeave">
所以我改为将 Height
/ Width
更改为 DesignHeight
/ DesignWidth
来解决问题:
mc:Ignorable="d" d:DesignHeight="750" d:DesignWidth="4070" MouseLeave="UserControl_MouseLeave">
在 WPF 项目中,如果我在 XAML 中手动插入项目,我有一个 ListBox
可以正确呈现,例如:
<ListBoxItem>
<Grid Background="#7F271043" Width="200" Height="200">
<Grid.RowDefinitions>
<RowDefinition Height="110" />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Image Grid.Row="0" Source="Logo-40p.png" HorizontalAlignment="Center" Margin="10,10,10,10" />
<TextBlock Grid.Row="1" Text="Test Item" Foreground="White" Margin="10,0,10,0" FontSize="16" VerticalAlignment="Center" />
<local:Rating Grid.Row="2" HorizontalAlignment="Left" Height="24" Margin="10,0,0,0" VerticalAlignment="Center" Width="130" SelectedValue="4" IsReadOnly="True" />
<TextBlock Grid.Row="2" Text="Free" Foreground="#FF969292" Margin="0,0,10,0" FontSize="14" HorizontalAlignment="Right" VerticalAlignment="Center" />
</Grid>
</ListBoxItem>
ListBoxItem
的底部看起来像:
然而,当我将 <ListBoxItem>
换成:
<ListBox.ItemTemplate>
<DataTemplate>
即使我保持其他一切相同,它也会给我的评级控制带来一个我无法修复的尺寸问题(不响应手动尺寸或拉伸设置):
关于如何解决这个问题有什么想法吗? ItemTemplate
/ DataTemplate
是否做了一些可能导致控件不遵守手动设置或由其所在的网格行设置的大小?
已设法解决此问题 - XAML 中手动定义的 ListBoxItem
的行为似乎与 ItemTemplate
/ DataTemplate
.[=22= 的输出不同]
我的评级用户控件有一个指定的设置高度和宽度,它们被 XAML(height/width/stretch)在 ListBoxItem
内但不在 ItemTemplate
内的实现覆盖/ DataTemplate
:
mc:Ignorable="d" Height="750" Width="4070" MouseLeave="UserControl_MouseLeave">
所以我改为将 Height
/ Width
更改为 DesignHeight
/ DesignWidth
来解决问题:
mc:Ignorable="d" d:DesignHeight="750" d:DesignWidth="4070" MouseLeave="UserControl_MouseLeave">