2013-03-01 17 views
5

Düğmeye bir görüntü ve bir etiket görüntülemek için bir düğme şablonu oluşturmak istiyorum. Düğme üzerinde yatay bir yığın bölmesi kullanmak için kullanıyorum.Bir resim ve bir metin içeren wpf düğmesi oluşturma

Etiketi görüntüleyemiyorum. İşte

<ControlTemplate TargetType="{x:Type Button}" x:Key="BoutonImageEtTexte"> 
<Button Grid.Column="2" BorderBrush="Transparent" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center" Width="90" Height="27" > 
    <Button.Content> 
     <StackPanel Orientation="Horizontal"> 
      <Border CornerRadius="3"> 
       <ContentPresenter/> 
       <Border.Style> 
        <Style TargetType="{x:Type Border}"> 
         <Setter Property="Background" Value="#58585a" /> 
         <Style.Triggers> 
          <Trigger Property="IsMouseOver" Value="True"> 
           <Setter Property="Background" Value="{StaticResource DegradeCouleurTheme}" /> 
          </Trigger> 
         </Style.Triggers> 
        </Style> 
       </Border.Style> 
      </Border> 
      <Label> 
       <Label.Content>Fichiers joints</Label.Content> 
       <Label.Foreground>white</Label.Foreground> 
       <Label.VerticalAlignment>center</Label.VerticalAlignment> 
       <Label.HorizontalAlignment>center</Label.HorizontalAlignment> 
      </Label> 
     </StackPanel> 
    </Button.Content> 
    <Button.Style> 
     <Style TargetType="{x:Type Button}" > 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type Button}" > 
         <ContentPresenter /> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </Button.Style> 
</Button> 

Bu şablonun benim kararım: Burada

benim şablon

İşte
<Grid Margin ="10,180,10,14"> 
      <Button Template="{StaticResource BoutonImageEtTexte}" HorizontalAlignment="Left" Margin="13,0,0,0"> 
       <Image Source="ToolBar_FicJoints.png" /> 
      </Button> 
     </Grid> 

yerine bir metin kutusu bir Etiketi ile başka yöntemdir

<ControlTemplate TargetType="{x:Type Button}" x:Key="BoutonImageEtTexte"> 
    <Button Grid.Column="2" BorderBrush="Transparent" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center" Width="90" Height="27" > 
     <Button.Content> 
      <StackPanel Orientation="Horizontal"> 
       <Border CornerRadius="3"> 
        <ContentPresenter/> 
        <Border.Style> 
         <Style TargetType="{x:Type Border}"> 
          <Setter Property="Background" Value="#58585a" /> 
          <Style.Triggers> 
           <Trigger Property="IsMouseOver" Value="True"> 
            <Setter Property="Background" Value="{StaticResource DegradeCouleurTheme}" /> 
           </Trigger> 
          </Style.Triggers> 
         </Style> 
        </Border.Style> 
       </Border> 
        <TextBlock Text="LabelText" /> 
       </StackPanel> 
     </Button.Content> 
     <Button.Style> 
      <Style TargetType="{x:Type Button}" > 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="{x:Type Button}" > 
          <ContentPresenter /> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </Button.Style> 
    </Button> 
</ControlTemplate> 

Sorunumda görüntümde belirtilen etiketin değil, görüntümde görüyorum. Herkes bana yardım edebilir mi?

Çok teşekkürler :)

+1

Kavramınız tamamen kapalı. İçerik olarak birden fazla öğeyi almak için bir düğmenin denetim şablonunu oluşturmak isterseniz, fazladan bağımlılık özelliği oluşturmanız gerekir. – TYY

+0

Bunu yapmak için bana bir örnek verebilir misiniz? –

+1

Bu iyi bir gönderiye benziyor ... http://blogs.msdn.com/b/knom/archive/2007/10/31/wpf-control-development-3-ways-to-build-an-imagebutton. aspx – PGallagher

cevap

12

Bir TextBlock bir etiket daha ihtiyaçlarınız iyi uyuyor. Ekstra etiket işlevini (hedef, nesne içeriği gibi) kullanmıyorsanız, iyi bir 'Text Text'le yapıştırın.

tüm düğme stilini devre dışı ve sadece bir resim ve etiket düğmesini olmasını istiyorsanız (not, bu farenin üzerinde/mousedown etkilerini nullifies, ancak tetikleyiciler mantığı sağlayabilir):

<ControlTemplate TargetType="{x:Type Button}" x:Key="SimpleButton"> 
    <ContentPresenter/> 
</ControlTemplate> 

Kullanımını :

Normal bir tarz düğmesini Resim/TextBlock istiyorsanız
<Button Template="{StaticResource SimpleButton}"> 
    <StackPanel Orientation="Horizontal"> 
     <Image Source="ToolBar_FicJoints.png" /> 
     <TextBlock Text="LabelText" /> 
    </StackPanel> 
</Button> 

, hatta daha kolaydır:

<Button> 
    <StackPanel Orientation="Horizontal"> 
     <Image Source="ToolBar_FicJoints.png" /> 
     <TextBlock Text="Fichiers joints" /> 
    </StackPanel> 
</Button> 
+0

Teşekkürler, ben deneyeceğim :) –

+1

denedim, ama benim metin kutusu düğmesinden görüntülenen, bir fikir var mı? İlk mesajımı TxtBoxMedthod ile düzenliyorum :) Çok teşekkürler! –

3

Tuvali aşağıdaki gibi kullanın.

<Button Height="50" Width="150" > 
         <Button.Template> 
          <ControlTemplate> 
           <Canvas> 
            <Image Source="./Images/Cancel.png"/> 
            <TextBlock Canvas.Left="22" Canvas.Top="8" Text="Cancel" FontFamily="Arial" FontSize="18"/> 
           </Canvas> 
          </ControlTemplate> 
         </Button.Template> 
        </Button> 

Sen ihtiyaçlarına göre Canvas.Left ve Canvas.Top ayarlayabilirsiniz. Umarım bu, Textblock'u görüntünün üstünde göstereceği için size yardımcı olacaktır.

İlgili konular