2009-06-03 21 views
6

nasıl ToolBar varsayılan düğme stili kullanmak için bir araç çubuğu içerde WPF UserControls zorlamak Araç Çubuğu UserControls için geçerli Making?ToolBar Düğme Stili

<UserControl x:Class="myNameSpace.ImageButtonUserControl" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    x:Name="imageButton" 
    > 
    <Button Style="{Binding ElementName=imageButton, Path=ButtonStyle}"> 
     <StackPanel Orientation="Horizontal"> 
      <Image Source="{Binding ElementName=imageButton, Path=ImageSource}" 
        VerticalAlignment="Center" 
        /> 
      <TextBlock Text="{Binding ElementName=imageButton, Path=Text}" 
         Style="{Binding ElementName=imageButton, Path=TextStyle}" 
         VerticalAlignment="Center" 
         /> 
     </StackPanel> 
    </Button> 
</UserControl> 

O bağlayıcı yolları için kodda bazı bağımlılık özellikleri vardır ve her şey iyi çalışır:

böyle XAML şey vardır ımagebutton denilen basit bir kullanıcı kontrolü var. Ben bir ToolBar koydum kadar olan

. Eğer bir araç çubuğu düğmeleri koymak Normalde onlar çubuğu düğmeleri gibi görünmek için araç çubuğu ile restyled edilir. Bu stili nasıl değiştirebileceğimi öğrendim (bkz. ToolBar.ButtonStyleKey. Ancak önceden tanımlanan stili Kullanıcı Denetimimin Düğme Stili bağımlılık özelliğine nasıl uygulayabilirim?

cevap

19

Ooh, özür! Sorunuzu yanlış yorumladım. Şöyle bir ver:

<Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"> 
    Hello, world! 
</Button> 

Stil yalnızca düğmeleri hedefler, bu nedenle yalnızca düğmelere uygulanabilir. (Hangisi yorumun bakılırsa bir sorun olmayacaktır.)

0

Bunu elde etmek için güçlü bir kara büyü gerekir. otomatik usercontrol için işleyen yeni bir stil oluşturun. yerleşik yerleşik araç çubuğuna ekleyebilirsiniz kontrolü. her tür için stilleri vardır (yani ToolBar.ButtonStyleKey yalnız değildir dikkat edin.) olan sen zanaat gerekir ve standart araç çubuğu elemanlarını kendiniz maçları kendi stil uygulamak.

+0

otomatik olarak bir tane oluşturmak istemiyoruz, sadece benim UserControl içinde düğmeye mevcut düğme stili uygulamak istediğiniz. – Ray

4

Bunu çözme başka yollarla ilgileniyorum rağmen, iş gibi görünüyor bir yol buldu.

UserControl'üme yüklenen bir olay işleyicisi ekledim ve bunu içine koydum.

if (button.Style == null && this.Parent is ToolBar) 
{ 
    button.Style = (Style)FindResource(ToolBar.ButtonStyleKey); 
} 

Düğüm, benim UserControl içindeki düğmenin adıdır.