1

我正在从我的 WPF 应用程序向用户显示日历。我有 Observable 集合并从 viewmodel 绑定这些集合。为了像日历一样显示(第一行中的前 7 列,下一行中的第二 7 列等),我正在使用“Wrap Panel”。下面的代码有效在 Windows 7 中完美。但是当我尝试在 Windows 8 中运行它时,我可以看到只有前 5 列显示在一行中。我该如何解决?Windows 8 操作系统中的 Wrap Panel Width 有什么问题吗?

 <ListBox x:Name="lstIcon" Grid.Row="1" ItemsSource="{Binding CalenderDatalist}"   Background="#FFF9F9F9" >        
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel Orientation="Horizontal" Width="245">
                    </WrapPanel>
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Vertical" Width="33" Height="60">
                        <TextBlock Width="15" Text="{Binding Day}" HorizontalAlignment="Left" VerticalAlignment="Center"  FontSize="10" Foreground="Red" />
                        <StackPanel Background="{Binding IsDropped,Converter={StaticResource BooleanToBackgroundConvertor}}" >
                            <TextBlock Width="25" Text="{Binding From}" HorizontalAlignment="Left" VerticalAlignment="Center"  FontSize="10" />
                            <TextBlock Width="25" Text="{Binding To}" HorizontalAlignment="Left" VerticalAlignment="Center"  FontSize="10" />
                            <TextBlock Width="25" Text="{Binding Time}" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="10" />
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
4

1 回答 1

2

由于您的DataTemplate项目具有固定大小,因此将ItemWidth属性设置为WrapPanel. 喜欢,

<WrapPanel Orientation="Horizontal" Width="245" ItemWidth="33">
</WrapPanel>
于 2013-08-16T14:18:50.697 回答