2011-06-06 18 views
18

मैं WPF में एक बड़ा चेकबॉक्स बनाना चाहता हूं। तो मुझे लगता है कि कोड का उपयोग चेकबॉक्स डिफ़ॉल्ट नज़र जैसा नहीं होता है http://msdn.microsoft.com/en-us/library/ms752319.aspxचेकबॉक्स आकार बदलें WPF

:

मुझे पता चला है कि मैं एक नियंत्रण टेम्पलेट करने की जरूरत है, एक उदाहरण जिनमें से यहाँ पाया जाता है। मैं बस इतना करना चाहता हूं कि सीमा चौड़ाई & ऊंचाई विशेषताओं को बदलना है।

मुझे एक नियंत्रण टेम्पलेट की आवश्यकता है जो डिफ़ॉल्ट रूप से बिल्कुल दिखता है, वहां से मैं केवल चौड़ाई और ऊंचाई को बदल दूंगा। क्या किसी को जानकारी है कि यह मुझे कहां से मिल सकता है? या एक बेहतर दृष्टिकोण?

उत्तर

49

इस बारे में कैसे?

<CheckBox> 
    <CheckBox.LayoutTransform> 
     <ScaleTransform ScaleX="2" ScaleY="2" /> 
    </CheckBox.LayoutTransform> 
</CheckBox> 

आप ScaleX और scaleY के लिए डबल मूल्यों का उपयोग कर सकते हैं अगर पूर्णांक मूल्यों आप वास्तव में क्या नहीं करना चाहता है।

+2

सुरुचिपूर्ण समाधान। मैंने इसे वैश्विक शैली के रूप में लागू किया। इस मार्ग पर जाने वाले लोगों के लिए, ध्यान दें कि यह सामग्री को भी स्केल करता है (चेकबॉक्स के बगल में पाठ या जो कुछ भी)। –

+0

यह शानदार ढंग से सरल है! – jbmeta

+0

यदि आप फ़ॉन्ट को डबल आकार के साथ भी नहीं चाहते हैं तो आप टेक्स्टबॉक्स के साथ एक स्टैकपैनल में टेक्स्ट को एक अलग टेक्स्टब्लॉक में डाल सकते हैं। इस समय समस्या यह है कि आप फ़ॉन्ट आकार को नियंत्रित कर सकते हैं, लेकिन बॉक्स का आकार नहीं बदलता है। यह वास्तव में मेरी राय में डिफ़ॉल्ट रूप से स्केल करना चाहिए। आप डिफ़ॉल्ट रूप से एक अजीब मेल नहीं खाते हैं। –

0

आप चेकबॉक्स के दृश्य पेड़ का उपयोग कर सकते हैं और जब आप जिन तत्वों को मौजूद करना चाहते हैं, उन्हें चौड़ाई और ऊंचाई को स्पष्ट रूप से सेट करके रनटाइम पर बदलें। पीटर ब्लॉइस स्नूप या कुछ समकक्षों का उपयोग यह देखने के लिए करें कि नामित तत्व हैं जिन्हें आप FindName के साथ एक्सेस कर सकते हैं; यदि नहीं, तो आपको अनुमान लगाना होगा (उदाहरण के लिए, कुछ शैलियों में दो सीमा तत्व हो सकते हैं और आपको एक चुनना होगा) और दृश्य पेड़ को स्पष्ट रूप से चलना चाहिए।

ध्यान रखें कि यदि आपको वह तत्व नहीं मिल रहा है, तो आपको यह कोड कुछ भी नहीं करना चाहिए।

3

डिफ़ॉल्ट ControlTemplates on MSDN पाया जा सकता है (Default WPF Themes लिंक देखें)।

आवश्यक theme controls संदर्भित करने के लिए अपने xaml फ़ाइल में संबंधित थीम नेमस्पेस को जोड़ना सुनिश्चित करें।

<theme:BulletChrome Background="{TemplateBinding Background}" 
        BorderBrush="{TemplateBinding BorderBrush}" 
        RenderMouseOver="{TemplateBinding IsMouseOver}" 
        RenderPressed="{TemplateBinding IsPressed}" 
        IsChecked="{TemplateBinding IsChecked}"/> 

मुझे यकीन है कि अगर आप सिर्फ यह सामान्य रूप से निर्दिष्ट कर सकते हैं, तो आप संदर्भ भी जोड़ने की जरूरत हो सकता है नहीं कर रहा हूँ।

यहां समस्या यह है कि आप वास्तव में सीमा आकार निर्दिष्ट नहीं कर सकते हैं क्योंकि नियंत्रण इसे encapsulates करता है।

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