Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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
Wpf 拉伸ListBoxItem样式问题_Wpf_Listbox_Styles_Listboxitem_Stretch - Fatal编程技术网

Wpf 拉伸ListBoxItem样式问题

Wpf 拉伸ListBoxItem样式问题,wpf,listbox,styles,listboxitem,stretch,Wpf,Listbox,Styles,Listboxitem,Stretch,拉伸列表框项目的内容时出现问题。我使用DataTemplate和Grid将最后一列的内容放在右边对齐。但是我必须有一些基本风格的控件来阻止这种显示,“*”(“消耗所有剩余空间”)显示像“自动”(“只取你真正需要的”) 所有ListBoxes的样式: <Style TargetType="{x:Type ListBox}"> <Setter Property="SnapsToDevicePixels" Value="true" /> <Setter P

拉伸
列表框项目的内容时出现问题。我使用
DataTemplate
Grid
将最后一列的内容放在右边对齐。但是我必须有一些基本风格的控件来阻止这种显示,“*”(“消耗所有剩余空间”)显示像“自动”(“只取你真正需要的”)

所有
ListBox
es的样式:

<Style TargetType="{x:Type ListBox}">
    <Setter Property="SnapsToDevicePixels" Value="true" />
    <Setter Property="Background" Value="{DynamicResource WindowBackgroundBrush}" />
    <Setter Property="BorderBrush" Value="{DynamicResource SolidBorderBrush}" />
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" />
    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
    <Setter Property="ScrollViewer.CanContentScroll" Value="True" />
    <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="{x:Type ListBox}">
              <Grid HorizontalAlignment="Stretch">
                  <Border x:Name="Border" HorizontalAlignment="Stretch"
                          BorderBrush="{TemplateBinding BorderBrush}" 
                          BorderThickness="{TemplateBinding BorderThickness}" />
                  <ScrollViewer Margin="1" Style="{DynamicResource NuclearScrollViewer}"
                                Focusable="false" Background="{DynamicResource LightBrush}"
                                x:Name="scrollViewer">
                      <StackPanel Margin="2" IsItemsHost="true" HorizontalAlignment="Stretch" />
                  </ScrollViewer>
              </Grid>
              <ControlTemplate.Triggers>
                  <Trigger Property="IsEnabled" Value="false">
                      <Setter Property="Background"
                              Value="{DynamicResource DisabledBackgroundBrush}" 
                              TargetName="Border" />
                      <Setter Property="BorderBrush"
                              Value="{DynamicResource DisabledBorderBrush}" 
                              TargetName="Border" />
                      <Setter Property="Background"
                              TargetName="scrollViewer" 
                              Value="{DynamicResource DisabledBackgroundBrush}"/>
                  </Trigger>
                  <Trigger Property="IsGrouping" Value="true">
                      <Setter Property="ScrollViewer.CanContentScroll" Value="false" />
                  </Trigger>
              </ControlTemplate.Triggers>
          </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
<Style d:IsControlPart="True" TargetType="{x:Type ListBoxItem}">
    <Setter Property="SnapsToDevicePixels" Value="true" />
    <Setter Property="OverridesDefaultStyle" Value="true" />
    <Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="{x:Type ListBoxItem}">
            <Grid SnapsToDevicePixels="true" HorizontalAlignment="Stretch"  >
                <Border HorizontalAlignment="Stretch" x:Name="Border" Opacity="0.25" 
                        Margin="0,1,0,1" Background="{DynamicResource NormalBrush}" 
                        BorderBrush="{DynamicResource NormalBorderBrush}" 
                        BorderThickness="1,1,1,1" CornerRadius="0,0,0,0" Padding="0,0,0,0" />
                <Rectangle Opacity="0.25" Fill="{DynamicResource LightBrush}" Stroke="{x:Null}" 
                           Height="10.849" Margin="1.153,1.151,1,0" VerticalAlignment="Top" />
                <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                  VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
                                  Margin="5,2,0,2" x:Name="contentPresenter" />
            </Grid>
            <ControlTemplate.Triggers>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="Selector.IsSelected" Value="True"/>
                        <Condition Property="IsEnabled" Value="False"/>
                    </MultiTrigger.Conditions>
                    <Setter Property="Background" TargetName="Border"
                            Value="{DynamicResource DisabledBackgroundBrush}"/>
                    <Setter Property="BorderBrush" TargetName="Border"
                            Value="{DynamicResource DisabledBorderBrush}"/>
                </MultiTrigger>
                <Trigger Property="IsSelected" Value="true">
                    <Setter Property="Opacity" TargetName="Border" Value="1" />
                    <Setter Property="Background" TargetName="Border"
                            Value="{DynamicResource SelectedBackgroundBrush}" />
                </Trigger>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="IsMouseOver" Value="True" />
                        <Condition Property="Selector.IsSelected" Value="False" />
                    </MultiTrigger.Conditions>
                    <Setter Property="Background" TargetName="Border"
                            Value="{DynamicResource MouseOverBrush}" />
                    <Setter Property="Opacity" TargetName="Border" Value="1" />
                </MultiTrigger>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="Selector.IsSelected" Value="True" />
                        <Condition Property="IsMouseOver" Value="True" />
                    </MultiTrigger.Conditions>
                    <Setter Property="Opacity" TargetName="Border" Value="0.65" />
                    <Setter Property="Background" TargetName="Border"
                            Value="{DynamicResource SelectedBackgroundBrush}" />
                </MultiTrigger>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="IsSelected" Value="true" />
                        <Condition Property="Selector.IsSelectionActive" Value="false" />
                    </MultiTrigger.Conditions>
                    <Setter Property="Background" TargetName="Border"
                            Value="{DynamicResource SelectedBackgroundBrush}" />
                    <Setter Property="Opacity" TargetName="Border" Value="0.6" />
                </MultiTrigger>
                <Trigger Property="IsEnabled" Value="false">
                    <Setter Property="Foreground"
                            Value="{DynamicResource DisabledForegroundBrush}" />
                    <Setter Property="Background" TargetName="Border"
                            Value="{DynamicResource DisabledBackgroundBrush}"/>
                    <Setter Property="BorderBrush" TargetName="Border"
                            Value="{DynamicResource DisabledBorderBrush}"/>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
  </Setter>
</Style>
类别应在左侧,电话和手机应在右侧,姓名和职位应填满左侧的整个空间。似乎项目中没有“完整”的空间,尽管它们在视觉上填满了列表框的宽度

有人能帮我吗?我对这件事很生气-(


编辑:

尝试为ListBoxItem设置要拉伸的水平内容对齐方式。类似于使用“ListBox”和“ListBoxItem”之外的方式:

尝试为ListBoxItem设置要拉伸的水平内容对齐方式。类似于使用“ListBox”和“ListBoxItem”之外的方式:

我很抱歉问了一个已经存在的已回答问题,我真的认为,我已将HorizontalContentAlignment设置为“延伸到所有地方”,但我确实没有为该项目这样做。非常感谢!我很抱歉问了一个已经存在的已回答问题,我真的认为,我已将HorizontalContentAlignment设置为“延伸到所有地方”在这里,但我确实没有做它的项目。非常感谢!
<ListBox Height="220"
         DataContext="{Binding}"
         ItemsSource="{Binding Persons}"
         SelectedItem="{Binding SelectedPerson}"
         VirtualizingStackPanel.VirtualizationMode="Recycling" 
         VirtualizingStackPanel.IsVirtualizing="True"
         ScrollViewer.IsDeferredScrollingEnabled="True" 
         HorizontalAlignment="Stretch"
         HorizontalContentAlignment="Stretch" 
         ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
         ScrollViewer.VerticalScrollBarVisibility="Auto"
         ScrollViewer.CanContentScroll="True">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid HorizontalAlignment="Stretch" 
                  MaxWidth="{Binding RelativeSource={RelativeSource
                                     Mode=FindAncestor,
                                     AncestorType={x:Type ListBox}},
                                     Path=ActualWidth}">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="Auto"/>
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" 
                           Width="25" Height="25"
                           Margin="0,0,5,0" 
                           HorizontalAlignment="Right"
                           VerticalAlignment="Center"
                           Text="{Binding Path=BusinessDataObject.Category}">
                    <TextBlock.Style>
                        <Style TargetType="{x:Type TextBlock}">
                            <Setter Property="TextAlignment" Value="Center"/>
                            <Setter Property="FontSize" Value="16"/>
                            <Setter Property="Foreground" Value="White"/>
                            <Setter Property="Background" Value="Transparent"/>
                            <Style.Triggers>
                                <Trigger Property="Text" Value="A">
                                    <Setter Property="Background" Value="Red"/>
                                </Trigger>
                                <Trigger Property="Text" Value="B">
                                    <Setter Property="Background" Value="Orange"/>
                                </Trigger>
                                <Trigger Property="Text" Value="C">
                                    <Setter Property="Background" Value="Blue"/>
                                </Trigger>
                            </Style.Triggers> 
                        </Style>
                    </TextBlock.Style>
                </TextBlock>
                <TextBlock Grid.Row="0"
                           Grid.Column="1" 
                           Margin="0,0,10,0"
                           HorizontalAlignment="Left" 
                           TextWrapping="Wrap"
                           FontWeight="Bold"
                           Text="{Binding Path=BusinessDataObject.FullNameReversed}"/>
                <TextBlock Grid.Row="1" Grid.Column="1" Margin="0,0,10,0"
                           HorizontalAlignment="Left" 
                           Text="{Binding Path=BusinessDataObject.Position}"/>
                <TextBlock Grid.Row="0" Grid.Column="2" Margin="0,0,0,0"
                           HorizontalAlignment="Right"
                           TextAlignment="Left"
                           Text="{Binding Path=BusinessDataObject.Phone}"/>
                <TextBlock Grid.Row="1" Grid.Column="2" Margin="0,0,0,0"
                           HorizontalAlignment="Right"
                           TextAlignment="Left"
                           Text="{Binding Path=BusinessDataObject.Mobile}"/>
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>   
</ListBox>