2016-07-25 13 views
0

コンボボックスにボタンを追加したいのですが、これにはItemTemplateが含まれています。まず、私が試したことは、このでした:コンボボックスのWPF追加ボタン

<ComboBox Name="oilWells_comboBox" 
      Style="{StaticResource MMComboBox}" 
      MaxWidth="100" 
      ItemsSource="{Binding DataContext.OilWellCollection, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:MainWindow}}" 
      Margin="0"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> 
       <CheckBox IsChecked="{Binding Path=IsDisplay}" Checked="FilterDataGrid" Unchecked="FilterDataGrid"> 
        <CheckBox.Content> 
         <TextBlock MinWidth="100" Text="{Binding Path=Name}" HorizontalAlignment="Center" TextWrapping="Wrap" TextTrimming="CharacterEllipsis"/> 
        </CheckBox.Content> 
       </CheckBox> 
      </StackPanel> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
    <Button Content="Clear" Height="20" HorizontalAlignment="Stretch"></Button> 
</ComboBox> 

しかし、私は私がItemTemplateにしているコントロールに項目を追加カント何言っ例外を、持っています。 2番目はこれでした:

<ComboBox Name="oilWells_comboBox" 
      Style="{StaticResource MMComboBox}" 
      MaxWidth="100" 
      ItemsSource="{Binding DataContext.OilWellCollection, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:MainWindow}}" 
      Margin="0"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> 
       <CheckBox IsChecked="{Binding Path=IsDisplay}" Checked="FilterDataGrid" Unchecked="FilterDataGrid"> 
        <CheckBox.Content> 
         <TextBlock MinWidth="100" Text="{Binding Path=Name}" HorizontalAlignment="Center" TextWrapping="Wrap" TextTrimming="CharacterEllipsis"/> 
         <Button Content="Clear" Height="20" HorizontalAlignment="Stretch"></Button> 
        </CheckBox.Content> 
       </CheckBox> 
      </StackPanel> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

しかし、この場合、各チェックボックスの後にボタンが追加されます。これを一度だけ行う方法はありますか?

+0

編集 'コンボボックス自体のTemplate'プロパティを。 VSでCBを右クリックし、 'Edit Template' - ' Edit copy'を選択して、そのテンプレートにButtonを追加します。 – ASh

+0

あなたの質問はクリアされていません - ボタンをComboBoxのオプションの1つにしますか? ボタンを含む独自のComboBoxを作成しますか? ComboBoxの各オプションにボタンが含まれていますか? – MichaelThePotato

+0

最初のコンボボックスアイテムとしてボタンを追加したいと思います。次のアイテムはすべてItemsTemplateのアイテムでなければなりません –

答えて

0

これはWindowsでロードされたイベントで試してください。うまくいくはずです。

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    Button b = new Button(); 
    b.Content = "My Button"; 
    b.Click += new RoutedEventHandler(MyBtn_Click); 
    oilWells_comboBox.Items.Add(b); 
} 
1
  1. 右>デザイナーの面で/またはデザイナーの表面外の左側にあるドキュメントアウトラインでテンプレートの編集>編集のコピーをコンボボックスをクリックします。

  2. これは、Window.Resourcesの下にいくつかのスタイルを生成ItemsPresenterを見つけて、以下に示すようにStackPanelButtonでそれをラップします:

    <StackPanel Grid.ColumnSpan="2"> 
        <Button Content="Additional"/> 
        <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
    </StackPanel> 
    
関連する問題