2010-07-15 31 views
7

Uygulamamda, Visual Studio 2008 tarafından sunulanlar gibi özelleştirilebilir araç çubukları kullanmak istiyorum (araç çubuğuna sağ tıklayın, özelleştirin). Bir WPF çözümüne ihtiyacım var ve hiçbirini bulamadım (SO veya Google'da). Bunu, Microsoft'un bile yapmakta zorluk çektiğini ima eden bu Visual Studio 2010 blog entry'u buldum. Her neyse, basit tutmak gerekirse, soru şu ki, bu işlevselliği sağlayan herhangi bir açık kaynak/serbest çerçeve var (VS2008'in çözümünün tam kopyası olmak zorunda değil).WPF içinde Özelleştirilebilir Araç Çubuğu

+0

mi kullanıcı tercihlerine göre araç çubuğu? –

+0

İkincisi, ve bunu gerçekten sıfırdan uygulamakla ilgilenmiyorum, nasıl yapılacağını biliyorum, bana biraz/en çok iş yükleyen bir çeşit çerçeve ile ilgileniyorum. – Ivan

cevap

3

Sadece biraz uğraştım ve WPF ile tek başına istenen davranışı uygulamak nispeten kolay olmalı (ek kütüphane veya çerçeve gerekli değildir). Button'u ToolBar'a eklemek için örnek kod ekledim, bu da araç çubuğuna daha fazla düğme eklemeyi sağlar.

İstediğiniz davranışı elde etmek için araç çubuğu için bir düğmeler ve kullanılabilir düğmeleri olan başka bir koleksiyona sahip olurdum. ItemsSource araç çubukları ilk koleksiyona bağlı olacaktır. Bağlam menüsünde "özelleştirme" düğmesine tıkladıktan sonra, iki koleksiyon ile birlikte ListViews (koleksiyonların her birine bağlı) ve düğmelerin tam koleksiyonundaki/düğmelerinden eklemek/kaldırmak için başka bir form göstereceğim. HTH.

Kodu:

public ObservableCollection<Button> Buttons { get; set; } 

public MainWindow() 
{ 
    InitializeComponent(); 

    Buttons = new ObservableCollection<Button>(); 
    AddButton(); 

    DataContext = this; 
} 

private void ButtonAddButton_Click(object sender, RoutedEventArgs e) 
{ 
    AddButton(); 
} 

private void AddButton() 
{ 
    var button = new Button(); 
    button.Content = "Add Button (" + Buttons.Count + ")"; 
    button.Click += ButtonAddButton_Click; 
    Buttons.Add(button); 
} 

XAML: Araç çubuğu tepsiye bir içerik menüsü eklemek veya dinamik simgeler ekleyin ve komutlarını nasıl bilmek isteyen nasıl hakkında sorun

<Grid> 
    <ToolBarTray> 
     <ToolBar ItemsSource="{Binding Buttons}"> 
      <ToolBar.ContextMenu> 
       <ContextMenu> 
        <MenuItem Header="Customize" /> 
       </ContextMenu> 
      </ToolBar.ContextMenu> 
     </ToolBar> 
    </ToolBarTray> 
</Grid> 
+1

Bu olağanüstü bir cevaptır. –

1

Bir ToolBar bir ItemsControl olduğu için, istediğiniz şeyi elde etmek için sürükle ve bırak çerçevelerini kullanmayı deneyebilirsiniz.

http://bea.stollnitz.com/blog/?p=53

Bu veriyle öğe işlemek için harika bir çözüm. ToolBar öğelerinizi göstermek için veri bağlama kullanmıyorsanız, kodu biraz özelleştirmeniz gerekecektir (veri bağlama özelliğini kullanmanızı öneririm, ancak özelleştirmeleri kaydetmeyi çok daha kolay hale getirecektir).

Uygulamanızda "özelleştir" düğmesine bastığınızda, kullanılabilir öğeler içeren bir ListBox'ı açabilirsiniz (yukarıdaki çözümün çalışması için aynı pencerede olmalıdır) ve ToolBars ve ListBox'taki sürükle ve bırak işlevini etkinleştirebilirsiniz. ilişikteki özelliği kullanarak.