我需要创建一个包含组合框的自定义控件,该组合框的弹出框将绑定对象的名称原型与左侧对齐,并且绑定对象的CreatedDate属性与每个弹出框中的右侧对齐up item。 Name和CreatedDate也不能重叠。对象的名称是可变长度在弹出框中有两列的组合框
我试着解决这个问题,在Combobox.ItemTemplate中使用DataTemplate,在数据模板中我有一个两列对齐的网格。 Grid的水平对齐设置为Stretch,但由于某些原因,Grid不填充弹出窗口中的可用空间。有谁知道如何解决这个问题,为什么会发生?我正在使用WPF 3.5。
<UserControl.Resources>
<CollectionViewSource x:Key="cvsProcessingSessionList" Source="{Binding ProcessingSessionList, ElementName=View}"/>
<Style TargetType="{x:Type ComboBox}"
BasedOn="{StaticResource {x:Static res:ObjectResources.LEComboBoxStyle}}">
<Setter Property="Margin" Value="5,3"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</UserControl.Resources>
<GroupBox x:Name="grbProcessingSession">
<GroupBox.Header>
<Bold>Processing Session:</Bold>
</GroupBox.Header>
<GroupBox.Content>
<ComboBox
x:Name="ccbProcessingSessionName"
ItemsSource="{Binding Source={StaticResource cvsProcessingSessionList}}"
Loaded="OnLoaded" TextSearch.TextPath="Name"
IsEditable="True" MaxDropDownHeight="500" >
<ComboBox.ItemTemplate>
<DataTemplate>
<Grid Background="Pink" HorizontalAlignment="Stretch" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" TextAlignment="Left" HorizontalAlignment="Left"
Margin="0,0,5,0" Text="{Binding Name}"/>
<TextBlock Grid.Column="1" TextAlignment="Right" HorizontalAlignment="Right"
Text="{Binding CreatedDate, StringFormat=dd/MM/yyyy}"/>
</Grid>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</GroupBox.Content>
</GroupBox>
工作!非常感谢。我们尝试了类似的方法,但是我们没有Mode = OneTime部分,但它不起作用。事实上,删除使得弹出宽度与屏幕一样宽。仅应用背景颜色才能看到网格。 – 2012-03-19 23:20:59
很高兴我能帮到你。如果可能的话,请将此标记为答案! – 2012-03-20 04:59:58
一旦我的声望达到15,我肯定会标记它 – 2012-03-20 22:55:32