Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ListBox未使用Grid.Column-WPF中的所有可用空间_C#_Wpf_.net 4.0_Listbox_Grid Layout - Fatal编程技术网

C# ListBox未使用Grid.Column-WPF中的所有可用空间

C# ListBox未使用Grid.Column-WPF中的所有可用空间,c#,wpf,.net-4.0,listbox,grid-layout,C#,Wpf,.net 4.0,Listbox,Grid Layout,我有一个ListBox控件,该控件已分配给Grid.Column 0,它的宽度定义了一个值“*”,但是在渲染时有相当大的空间未被使用 我还注意到ListBox控件本身周围有一个排序边界,但是我没有在标记中添加一个 我的UI关注区域标记为红色: 我的标记: <Window.Resources> <DataTemplate x:Key="GameImagesTemplate" > <StackPanel Orientation="

我有一个ListBox控件,该控件已分配给Grid.Column 0,它的宽度定义了一个值“*”,但是在渲染时有相当大的空间未被使用

我还注意到ListBox控件本身周围有一个排序边界,但是我没有在标记中添加一个

我的UI关注区域标记为红色:

我的标记:

<Window.Resources>
        <DataTemplate x:Key="GameImagesTemplate" >
            <StackPanel Orientation="Vertical">
                <Image Source="{Binding FileInfo.FullName}" Margin="8,8,8,8" Height="70" Width="70" />
                <Label Content="{Binding Name}" Width="70" />
            </StackPanel>
        </DataTemplate>

        <DataTemplate x:Key="GameTemplate">
            <StackPanel>
                <Label Content="{Binding Name}" Background="Gray" FontSize="16" />
                <ListBox x:Name="imageContent" ItemsSource="{Binding FileList}" ItemTemplate="{StaticResource GameImagesTemplate}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" >
                    <ListBox.ItemsPanel>
                        <ItemsPanelTemplate>
                            <WrapPanel Orientation="Horizontal" IsItemsHost="True" />
                        </ItemsPanelTemplate>
                    </ListBox.ItemsPanel>
                </ListBox>
            </StackPanel>
        </DataTemplate>
    </Window.Resources>

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>

        <ListBox x:Name="ContentList" ItemTemplate="{StaticResource GameTemplate}" Grid.Column="0" ScrollViewer.HorizontalScrollBarVisibility="Disabled" />

        <StackPanel Grid.Column="1" Background="DarkGray">
            <Button Click="OnLoad">_Load</Button>
            <Button Click="OnSave">_Save</Button>
            <Button Click="OnAdd">_Add</Button>
            <Button Click="OnDelete">_Delete</Button>
        </StackPanel>
    </Grid>
我将如何着手解决提出的这两个问题。这是ListBox控件的默认行为吗


非常感谢

是的,这是默认行为

在对齐的情况下,看起来每个ListBoxItem中都有一个WrapPanel,它没有足够的空间将另一个项目放在第1行。剩余空间未使用,因为ListBox上的HorizontalContentAlignment设置默认为左侧。默认的ListBoxItem又将此设置绑定到。在列表框上设置HorizontalContentAlignment=Stretch应该可以解决这个问题

外部边框来自BorderBrush和BorderThickness的默认设置。将BorderThickness设置为0将完全消除它


还有一些其他默认填充设置可以在默认样式和模板中添加一些间距。如果您想深入了解这些内容,请在Blend中将列表框添加到项目中,并复制其默认模板和ItemContainerStyle,然后签出XAML。在不需要选择行为的情况下,也可以考虑使用基本ItMs控件,因为它没有任何类型的默认设置。

< P>是的,这是默认行为。

在对齐的情况下,看起来每个ListBoxItem中都有一个WrapPanel,它没有足够的空间将另一个项目放在第1行。剩余空间未使用,因为ListBox上的HorizontalContentAlignment设置默认为左侧。默认的ListBoxItem又将此设置绑定到。在列表框上设置HorizontalContentAlignment=Stretch应该可以解决这个问题

外部边框来自BorderBrush和BorderThickness的默认设置。将BorderThickness设置为0将完全消除它


还有一些其他默认填充设置可以在默认样式和模板中添加一些间距。如果您想深入了解这些内容,请在Blend中将列表框添加到项目中,并复制其默认模板和ItemContainerStyle,然后签出XAML。也可以考虑在不需要选择行为的情况下使用基本ItMs控件,因为它没有任何类型的默认设置。

谢谢约翰,你的建议奏效了。我以前的实现使用了ItemsControl,但我认为选择功能是我非常想要的特性。这可能是一个有点宽泛的问题,但是扩展/自定义默认控件样式/模板是否被鼓励用于WPF?是的,但有时这有些过分。如果你不用做就可以进行所需的更改,那么你仍然可以在不同的操作系统上获得本机样式的好处。谢谢John,你的建议成功了。我以前的实现使用了ItemsControl,但我认为选择功能是我非常想要的特性。这可能是一个有点宽泛的问题,但是扩展/自定义默认控件样式/模板是否被鼓励用于WPF?是的,但有时这有些过分。如果您可以在不做更改的情况下进行所需的更改,那么您仍然可以从不同操作系统上的本机样式中获益。