मैं टेक्स्टब्लॉक पर क्लिक करने और इसे कमांड चलाने में सक्षम होना चाहता हूं। क्या यह संभव है? (यदि नहीं, तो मैं इसे किसी भी तरह से किसी चीज़ पर एक ट्रैनपेरेंट बटन बना देता हूं?)एक डब्ल्यूपीएफ टेक्स्टब्लॉक में कमांड जोड़ने के लिए कैसे?
उत्तर
आप एक InputBinding उपयोग कर सकते हैं।
<TextBlock Text="Hello">
<TextBlock.InputBindings>
<MouseBinding Command="" MouseAction="LeftClick" />
</TextBlock.InputBindings>
</TextBlock>
संपादित करें: हाइपरलिंक शायद उल्लेख भी लायक है।
<TextBlock><Hyperlink Command="" TextDecorations="None" Foreground="Black">Hello</Hyperlink></TextBlock>
वैसे बटन आपके क्लिक का उपभोग करेगा और क्लिक आपके TextBlock
पर आगे नहीं जाएगा। यदि आपको इसकी आवश्यकता नहीं है, तो ऐसा करने का एक तरीका होगा। आप टेक्स्टब्लॉक कंट्रोल टेम्पलेट को संशोधित कर सकते हैं और बटन को एक पारदर्शी आयत के साथ एक नया कंट्रोल टेम्पलेट दे सकते हैं। एक अच्छा समाधान EventBehavior जैसी घटनाओं को हुकअप आदेशों के लिए एक तरीका का उपयोग करना होगा और इसे OnMouseLeftButtonDown
ईवेंट पर डालें।
आप इस पर एक पारदर्शी बटन नहीं बनाते हैं, तो आप इसे में TextBlock डाल:
<Button>
<Button.Template>
<ControlTemplate TargetType="Button">
<ContentPresenter />
</ControlTemplate>
</Button.Template>
<TextBlock Text="Lorem Ipsum"/>
</Button>
तुम भी 'MinHeight =" 0 "' बटन को जोड़ सकते हैं। –
यह बहुत अच्छा होगा अगर यह माउस पर आग नहीं लगाया गया है, फिर भी सादगी के लिए +1 हालांकि ... –
हाँ, माउस बाइंडिंग कई बार सीमित हो सकती है। मैंने हाइपरलिंक विधि को माउसअप – Kris
वाह पर निष्पादित किया है, आप काफी संसाधनपूर्ण हैं, कि हाइपरलिंक विकल्प बहुत सही है ... –