2009-11-24 10 views
15

के लिए कमांड बाध्यकारी सक्षम करें मैं एक WPF अनुप्रयोग विकसित कर रहा हूं, और एक टेक्स्टब्लॉक है जिसे मैं क्लिक करने पर कमांड को ट्रिगर करने के लिए कमांड बाध्यकारी का उपयोग करना चाहता हूं। इसे प्राप्त करने का सबसे अच्छा तरीका क्या है?टेक्स्टब्लॉक

  • टेक्स्टब्लॉक-नियंत्रण में कमांड प्रॉपर्टी नहीं है, लेकिन इसमें कमांड मैनेजर है। यह क्या है? क्या इसे कमांड बाइंडिंग के लिए इस्तेमाल किया जा सकता है? मैंने इस संपत्ति के साथ-साथ कई अन्य नियंत्रण भी देखे हैं ..

  • क्या कोई नियंत्रण है जिसे मैंने देखा है जिसका उपयोग किया जा सकता है? क्या यह उदा। बटन का उपयोग करने और इसे बटन की तरह दिखने के लिए स्टाइल करने की अनुशंसा नहीं की जाती है?

  • क्या कमांड बाइंडिंग का समर्थन करने वाले कुछ नियंत्रण हैं जिन्हें मैं टेक्स्टब्लॉक के आसपास लपेट सकता हूं?

  • क्या मुझे एक कस्टम नियंत्रण बनाना चाहिए जो मूल रूप से टेक्स्टब्लॉक है, लेकिन अतिरिक्त गुणों के साथ कमांड और कमांड आर्ग्यूमेंट जो कमांड बाध्यकारी को सक्षम बनाता है। MouseLeftButtonDown संपत्ति।

उत्तर

17

वहाँ कि इस्तेमाल किया जा सकता कुछ नियंत्रण मैं देखरेख है है? क्या यह उदा। बटन का उपयोग करने और इसे बटन की तरह दिखने के लिए स्टाइल करने की अनुशंसा नहीं की जाती है?

हां। सबसे आसान तरीका टेक्स्टब्लॉक की तरह कार्य करने के लिए बटन को फिर से टेम्पलेट करना होगा और बटन क्लास पर कमांड प्रॉपर्टी का लाभ उठाना होगा।

कुछ इस तरह:

<ControlTemplate TargetType="Button"> 
     <TextBlock Text="{TemplateBinding Content}" /> 
    </ControlTemplate> 
... 
<Button Content="Foo" Command="{Binding Bar}" /> 
+0

धन्यवाद। उम्मीद की तरह काम करता है - और यह वास्तव में बहुत साफ है ..! मैंने अब "WPF Unleased" में ControlTemplates पर पढ़ा है, और यह सही लगता है। "टेक्स्ट =" {टेम्पलेट बाइंडिंग सामग्री} "" वैसे भी क्या करता है? टेक्स्टब्लॉक पर टेक्स्ट प्रॉपर्टी के लिए सामग्री सामग्री को बटन पर सेट करें जो बाध्य करें? – stiank81

+0

यूप, यह वही है जो यह करता है। –

0
<Window.Resources> 
<CommandBinding x:Key="binding" Command="ApplicationCommands.Save" Executed="SaveCommand" CanExecute="SaveCommand_CanExecute" /> 
</Window.Resources> 


<TextBox Margin="5" Grid.Row="2" TextWrapping="Wrap" AcceptsReturn="True" TextChanged="txt_TextChanged"> 
<TextBox.CommandBindings> 
<StaticResource ResourceKey="binding"></StaticResource> 
</TextBox.CommandBindings> 
</TextBox> 

आप http://www.java2s.com/Tutorial/CSharp/0470__Windows-Presentation-Foundation/BindTextBoxsavecommandtoCommandBinding.htm

+0

कृपया बताएं कि यह उत्तर – CocoNess

2

XAML नीचे देखा एक कमान एक WPF TextBlock जो फिर एक माउस कार्रवाई पर कार्य करेगी बाइंडिंग जोड़ने के लिए इस्तेमाल किया जा सकता है।

<TextBlock FontWeight="Bold" Text="Header" Cursor="Hand"> 
    <TextBlock.InputBindings> 
     <MouseBinding Command="ApplicationCommands.Cut" MouseAction="LeftClick"/> 
    </TextBlock.InputBindings> 
</TextBlock> 

Command से एक हो सकता अंतर्निहित एप्लिकेशन आदेश, जो ऊपर दिखाए गए, या यह एक कस्टम Command कि ICommand इंटरफ़ेस से विरासत के रूप में हो सकता है वाक्य रचना का प्रयोग करेंगे। उस मामले में, वाक्य रचना होगा:

<MouseBinding Command="{Binding myCustomCommand}" MouseAction="LeftClick"/> 

MouseAction क्या वहाँ (VS2015 में) डाल करने के लिए पर कोई Intellisense सुझावों प्रदान नहीं करता है, तो आप वैध enumerations प्राप्त करने के लिए एक छोटे से खुदाई करना है।

.NET 4.5 के रूप में, MouseAction के लिए मान्य प्रविष्टियों हैं:

  • LeftClick - बाईं माउस बटन क्लिक करें।
  • LeftDoubleClick - बाएं माउस बटन डबल-क्लिक करें।
  • MiddleClick - मध्य माउस बटन क्लिक करें।
  • MiddleDoubleClick - मध्य माउस बटन डबल-क्लिक करें।
  • कोई नहीं - कोई कार्रवाई नहीं।
  • राइटक्लिक - दायां माउस बटन क्लिक करें।
  • राइट डब्लिकक्लिक - दायां माउस बटन डबल-क्लिक करें।
  • व्हीलक्लिक - एक माउस व्हील रोटेशन।

ऊपर दिखाए गए स्थिरांक MSDN से लिया गया है।

+0

पर सवाल कैसे उठाता है, जबकि यह कोड प्रश्न का उत्तर दे सकता है, यह स्पष्ट करना बेहतर होगा कि _how_ यह दूसरों को पेश किए बिना समस्या हल करता है और इसका उपयोग करने के लिए _why_। कोड-केवल उत्तर लंबे समय तक उपयोगी नहीं होते हैं। –

+0

सुझाव @BenjaminW के लिए धन्यवाद। यह समुदाय में मेरा पहला जवाब है :-) – Praveen

+0

@Praveen, अच्छा जवाब। ठीक यही है जिसकी मुझे ज़रूरत थी। मैंने आपके विवरण को और विवरण और उपयोग युक्तियों को शामिल करने के लिए संपादित किया। – Stewbob

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