2010-10-07 24 views
11

Denetime sahibim, bu denetimde SaveToClipboardCommand adlı bir komut var. Bir bağlam menü öğesi komutunu bu komutla bağlamak istiyorum, böylece tıklattığımda, panoya kopyala komutu çalıştırılır.Bağlam menü öğesinden ana denetim öğesine bağlanma

<Control x:Name="Control"> 
    <Control.ContextMenu> 
     <ContextMenu> 
      <MenuItem Command={"Bind to SaveToClipboardCommand here"} Header="Some Header" /> 
     </ContextMenu> 
    </Control.ContextMenu/> 
</Control> 

(argüman uğruna) kontrol, bu aşağıdaki gibi tanımlanır:

partial class Control 
{ 
     private ICommand _saveToClipboard; 
     public ICommand SaveToClipboardCommand 
     { 
      get 
      { 
       if (_saveToClipboard == null) 
       { 
        _saveToClipboard = new RelayCommand(
         x=> SaveToClipboard()); 
       } 
       return _saveToClipboard; 
      } 
    } 
} 

I RelativeSource ve ElementName göre bağları kullanarak denedi, ancak her ikisi de başarısız. Mümkün olanı yapmaya çalışıyorum mı?

Teşekkürler!

+0

Ne RelativeSource denediniz? FindAncestor'ı denedin mi? –

+0

'{Binding RelativeSource = {RelativeSource Mode = FindAncestor, AncestorType = {x: Type Control}}, Path-SaveToClipboardCommand}' – TerrorAustralis

+0

Bir denetimin içerik menüsüne, denetim içinde tanımlanan bir komutla bağlanmaya çalışıyor musunuz? Eğer öyleyse, o kontrolün XAML'sinde bağlamayı yapmalı ve DataContext'ini 'bu' olarak ayarlamalısınız. Komut üyesine 'Denetim' sınıfı kapsamı dışında bağlanıyorsanız, DataContext'in çözüme kavuşturulacak şekilde olması gerekir. – whoisthis

cevap

19

DÜZENLEME (kontrol maruz gösteren sonra): aslında aynı görsel ağacının bir parçası değil çünkü Eh ContextMenu biraz zordur. Bunu yaparken deneyin:

<MenuItem Command="{Binding Path=PlacementTarget.SaveToClipboardCommand, 
    RelativeSource={RelativeSource AncestorType=ContextMenu}}"/> 

bu komut Kontrol kamu özellik olarak ortaya mı

Orijinal cevap?

Command={Binding ElementName=Control, Path=DataContext.SaveToClipboardCommand} 

Bu komut anda maruz nasıl gösterebilir: komut aslında denetimin DataContext bir ViewModel asılı maruz ise, aşağıdakileri yapmak için?

+0

Komut düzenleniyor RelayCommand sadece standart bir ICommand uygulamasıdır – TerrorAustralis

+0

Well ContextMenu biraz zor, çünkü aslında aynı şeylerin parçası değil Görsel ağaç: Bunu yapmayı deneyin:

+0

Bu tomota bir göz atacağım :) teşekkürler dostum. Kanlı içerik menüleri – TerrorAustralis

-1
Command={Binding ElementName=Control, Path=SaveToClipboardCommand} 

HTH

+1

Bunu denedi, ama benim için çalışmıyor :('Bağlama kaynağı bulamıyor ...' diyor – TerrorAustralis

İlgili konular