2016-01-31 181 views
1

我在刪除ComboBox列表中的填充時遇到問題。從組合框中刪除填充

我填寫列表有三個按鈕,和第一按鈕上方還有空間和最後一個按鈕下方還有空間:

關閉時

When closed

當打開

When opended

另一個問題是該列表沒有出現在按鈕,就像你在第二張照片上看到的那樣。

這是代碼(注意,沒有造型還):

<ComboBox x:Name="importComboBox" Margin="25" HorizontalAlignment="Stretch"> 
       <ComboBox.PlaceholderText>Placeholder</ComboBox.PlaceholderText> 
       <ComboBoxItem Padding="0" Margin="0"> 
        <Button VerticalAlignment="Stretch" HorizontalAlignment="Stretch">button 1</Button> 
       </ComboBoxItem> 
       <ComboBoxItem Padding="0" Margin="0"> 
        <Button VerticalAlignment="Stretch" HorizontalAlignment="Stretch">button 2</Button> 
       </ComboBoxItem> 
       <ComboBoxItem Padding="0" Margin="0"> 
        <Button VerticalAlignment="Stretch" HorizontalAlignment="Stretch">button 3</Button> 
       </ComboBoxItem> 
      </ComboBox> 

如何刪除這些空間,我可以改變下拉菜單的位置?

+3

您確定要將按鈕放入組合框嗎?如果您希望在用戶選擇某個項目時觸發某個操作,則寧願訂閱ComboBox的SelectionChanged事件併爲您節省所有麻煩。 –

+0

同意@KooKiz,你可能不想這樣做。但是,如果要更改模板,請右鍵單擊XAML頁面,在混合中打開,然後右鍵單擊並編輯控件及其項目的模板。 –

+0

是的,我確定我想使用按鈕,我不想讓用戶選擇一些東西,我只是想要一些帶按鈕的彈出菜單,這些按鈕的作用與組合框會「飛出去」一樣,懶得(現在)爲它編寫一個自定義控件:-) –

回答

1

正如Peter所說,爲了達到這個目的,我們可以修改ComboBox的模板。要修改的ComboBox模板,我們可以選擇「[importComboBox]」中的「文檔大綱」並單擊右鍵,然後選擇「編輯模板」→「編輯副本...」。

刪除列表中的填充。編輯ItemsPresentermargin財產。 ItemsPresenter指定項目放置在控件中的位置。

<ItemsPresenter Margin="0,0,0,0" /> 

做出的排行榜出現在按鈕下方,我們可以主編PopupBorderMargin財產。它決定了Popup的位置。

<Border x:Name="PopupBorder" 
     BorderBrush="{ThemeResource SystemControlForegroundChromeHighBrush}" 
     BorderThickness="{ThemeResource ComboBoxDropdownBorderThickness}" 
     Background="{ThemeResource SystemControlBackgroundChromeMediumLowBrush}" 
     HorizontalAlignment="Stretch" 
     Margin="0,32,0,0">