2016-12-20 5 views
0

Я разместил xctk CheckComboBox в ToolBar. У меня есть простой ComboBox рядом с ним, и эти два выглядят по-другому. Простой ComboBox имеет стиль ToolBar.ComboBoxStyleKey (https://msdn.microsoft.com/en-us/library/system.windows.controls.toolbar.comboboxstylekey(v=vs.110).aspx). Но это не относится к CheckComboBox.Расширенный WPF Toolkit CheckComboBox Style в ToolBar

Проще ли извлечь мой собственный CheckComboBox из ComboBox (и иметь тот же стиль) или изменить стиль CheckComboBox?

Как я могу изменить внешний вид так, чтобы CheckComboBox выглядел как ComboBox?

Слева есть ComboBox, справа, есть CheckComboBox:

  • Это нормальный визуальный стиль:

This is normal visual style

  • Это сфокусировано стиль:

enter image description here

Любая помощь очень ценится. Спасибо вам, ребята.

ответ

0

Вы можете легко создать checkboxcombo с помощью ItemTemplate. См. Ниже код.

<Grid> 
    <StackPanel> 
     <ComboBox x:Name="cbo"> 
      <ComboBox.ItemTemplate> 
       <DataTemplate DataType="local:MyCombo"> 
        <StackPanel Orientation="Horizontal"> 
         <CheckBox IsChecked="{Binding IsChecked}"/> 
         <TextBlock Text="{Binding Name}"/> 
        </StackPanel> 
       </DataTemplate> 
      </ComboBox.ItemTemplate> 
     </ComboBox> 
    </StackPanel> 
</Grid> 

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     List<MyCombo> lst = new List<MyCombo>(); 
     for (int i = 0; i < 10; i++) 
     { 
      lst.Add(new MyCombo() {IsChecked = true,Name = "Name"+i}); 
     } 
     cbo.ItemsSource = lst; 
    } 
} 

public class MyCombo 
{ 
    public bool IsChecked { get; set; } 

    public string Name { get; set; } 
} 
+0

Основная проблема заключается в том, что моя модель не имеет свойства IsChecked и не может иметь ее. Я хочу, чтобы мои выбранные элементы были привязаны и обновлены через единый набор выбранных элементов, который может выполняться xctk CheckComboBox, и будет очень сложно реализовать его снова в новом ComboBox. И я не могу использовать преобразователи. – Zelda

+0

В любом случае, ваше решение работает для простого решения. благодаря – Zelda