我需要創建一個包含組合框的自定義控件,該組合框的彈出框將綁定對象的名稱原型與左側對齊,並且綁定對象的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