2011-08-09 28 views
52

मैं टेक्स्टब्लॉक पर क्लिक करने और इसे कमांड चलाने में सक्षम होना चाहता हूं। क्या यह संभव है? (यदि नहीं, तो मैं इसे किसी भी तरह से किसी चीज़ पर एक ट्रैनपेरेंट बटन बना देता हूं?)एक डब्ल्यूपीएफ टेक्स्टब्लॉक में कमांड जोड़ने के लिए कैसे?

उत्तर

121

आप एक InputBinding उपयोग कर सकते हैं।

<TextBlock Text="Hello"> 
    <TextBlock.InputBindings> 
     <MouseBinding Command="" MouseAction="LeftClick" /> 
    </TextBlock.InputBindings> 
</TextBlock> 

संपादित करें: हाइपरलिंक शायद उल्लेख भी लायक है।

<TextBlock><Hyperlink Command="" TextDecorations="None" Foreground="Black">Hello</Hyperlink></TextBlock> 
+1

यह बहुत अच्छा होगा अगर यह माउस पर आग नहीं लगाया गया है, फिर भी सादगी के लिए +1 हालांकि ... –

+2

हाँ, माउस बाइंडिंग कई बार सीमित हो सकती है। मैंने हाइपरलिंक विधि को माउसअप – Kris

+3

वाह पर निष्पादित किया है, आप काफी संसाधनपूर्ण हैं, कि हाइपरलिंक विकल्प बहुत सही है ... –

0

वैसे बटन आपके क्लिक का उपभोग करेगा और क्लिक आपके TextBlock पर आगे नहीं जाएगा। यदि आपको इसकी आवश्यकता नहीं है, तो ऐसा करने का एक तरीका होगा। आप टेक्स्टब्लॉक कंट्रोल टेम्पलेट को संशोधित कर सकते हैं और बटन को एक पारदर्शी आयत के साथ एक नया कंट्रोल टेम्पलेट दे सकते हैं। एक अच्छा समाधान EventBehavior जैसी घटनाओं को हुकअप आदेशों के लिए एक तरीका का उपयोग करना होगा और इसे OnMouseLeftButtonDown ईवेंट पर डालें।

22

आप इस पर एक पारदर्शी बटन नहीं बनाते हैं, तो आप इसे में TextBlock डाल:

<Button> 
    <Button.Template> 
     <ControlTemplate TargetType="Button"> 
      <ContentPresenter /> 
     </ControlTemplate> 
    </Button.Template> 
    <TextBlock Text="Lorem Ipsum"/> 
</Button> 
+0

तुम भी 'MinHeight =" 0 "' बटन को जोड़ सकते हैं। –

संबंधित मुद्दे