2010-10-07 33 views
10

Görüntü tıklatıldığında çalıştırılacak olan görünüm modelimden özel bir komut nesnesi bağlamak istediğim bir görüntü denetimi olan bir WPF uygulamasını bir araya getiriyorum. Komut nesnesini görünüm modelimden çıkardım ve sadece görüntü kontrolüne bağladım.WPF Resim Komutu Bağlama

Bu komut nesnesini bir görüntü denetimine bağlamak mümkün mü? Eğer varsa, herhangi bir tavsiye takdir edilecektir. Eğer standart düğme krom istemiyorsanız

<Button Command="{Binding MyCommand}"> 
    <Image Source="myImage.png" /> 
</Button> 

, tıpkı bir şeyle düğmeye şablonu değiştirin:

+0

Bununla ne demek istediğinden emin değil misiniz? Görüntünün bağlıysa ne yapmasını istersin? –

cevap

16

bir düğmeye resim koymak ve komuta düğmesine bağlamak gerekir o:

: Ayrıca aksi şablon yukarıda varsayılan düğme arka plan ve sınır kullanacaktır, varsayılan düğme stili geçersiz kılmak için diğer özelliklerini değiştirmek gerekecektir

<ControlTemplate x:Key="tplFlatButton" TargetType="{x:Type Button}"> 
    <Border Width="{TemplateBinding Width}" 
      Height="{TemplateBinding Height}" 
      Background="{TemplateBinding Background}" 
      BorderBrush="{TemplateBinding BorderBrush}" 
      BorderThickness="{TemplateBinding BorderThickness}"> 
     <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
          VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
          TextElement.Foreground="{TemplateBinding Foreground}" 
          TextElement.FontFamily="{TemplateBinding FontFamily}" 
          TextElement.FontSize="{TemplateBinding FontSize}" 
          TextElement.FontStretch="{TemplateBinding FontStretch}" 
          TextElement.FontWeight="{TemplateBinding FontWeight}"/> 
    </Border> 
</ControlTemplate> 

Not 0

<Style x:Key="stlFlatButton" TargetType="{x:Type Button}"> 
    <Setter Property="Background" Value="{x:Null}" /> 
    <Setter Property="BorderBrush" Value="{x:Null}" /> 
    <Setter Property="BorderThickness" Value="0" /> 
    <Setter Property="Template" Value="{StaticResource tplFlatButton}" /> 
</Style> 
+0

Bir milyon teşekkür, bir tedavi çalıştı. – David

11

Bir düğmeyi kullanarak önlemek ve Hyperlink yerine kullanımı daha basit olabilir: Bu varsayılan metin dekorasyonu ile köprü oluşturulacağına dair

<TextBlock DockPanel.Dock="Top"> 
    <Hyperlink Command="{Binding SomeCommand}"> 
     <Image Source="image.png" /> 
    </Hyperlink> 
</TextBlock> 

Not, böylece bir stil eklemek isteyebileceğiniz @Robert Rossney gelen cevabın

<Style x:Key={x:Type Hyperlink}" TargetType="Hyperlink"> 
    <Setter Property="TextDecorations" 
      Value="{x:Null}" /> 
</Style> 
4

Basitleştirilmiş sürümü:

içeren elemanının kaynak sözlükte bu koyarak hile olacaktır - yani kaldırır

bir resim eklemeyi iyi yolu, bir {StaticResource x} kullanmak WPF image resources

13

İşte ben şahsen ben başka denetiminde onu çevreleyen olmadan komutuyla bir görüntü istiyorsanız çoğu zaman kullanmayı seven bir başka çözüm görmektir. O zaman bunun bir eylem değil, bir statik resim olduğunu daha net şekilde görülecek biçimde

<Image Source="Images/tick.png" Cursor="Hand" Tooltip="Applies filter"> 
    <Image.InputBindings> 
      <MouseBinding Gesture="LeftClick" Command="{Binding ApplyFilter, Mode=OneTime}" /> 
    </Image.InputBindings> 
</Image> 

ben özelliklerini Hand ve Tooltip ayarlayın.

+0

Görebildiğim kadarıyla, bu çözüm fare düğmesine basıldığında zaten komutu çalıştırır. Fare düğmesi serbest bırakıldığında yürütmenin başlatılmasını beklerdim. Bir düğmenin davranışı gibi. Sadece bir not! – Florian

+1

@Florian Teşekkürler, bunu fark etmedim. Genelde bir şey tıklamanın ortasında durmam. –