我有一个充满 24 小时的下拉列表。在 12:00 之后,我想插入一条线来区分两个时间片。我能怎么做?
谢谢
如果您对值进行硬编码,那么这样的事情就可以解决问题:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<ComboBox HorizontalAlignment="Center" Margin="10">
<!-- ... -->
<ComboBoxItem Content="10:00"/>
<ComboBoxItem Content="11:00"/>
<ComboBoxItem>
<ComboBoxItem.Content>
<Border BorderBrush="Black" BorderThickness="0,0,0,1">
<TextBlock Text="12:00" Margin="0,0,0,1"/>
</Border>
</ComboBoxItem.Content>
</ComboBoxItem>
<ComboBoxItem Content="13:00"/>
<!-- ... -->
</ComboBox>
</Grid>
我在网上找到了这个技巧......并且它有效!在我的 XAML 中,我介绍了这个代码片段:
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}"
BasedOn="{StaticResource {x:Type ComboBoxItem}}">
<Style.Triggers>
<DataTrigger Binding="{Binding}"
Value="">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ComboBoxItem}">
<Separator HorizontalAlignment="Stretch"
IsEnabled="False" />
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.ItemContainerStyle>
然后在我后面的代码中,我插入了一个全新的不可编辑的空白项目。结果是预选项目下的一行。我的目标达到了。
我希望这可以帮助某人(将来也是我:))