2012-12-03 19 views
9

मैं सिर्फ WPF के साथ शुरू कर दिया और एक चेकबॉक्स के लिए विशिष्ट सुविधा की जरूरत है:WPF चेकबॉक्स शैली परिवर्तन

  1. मैं एक बॉक्स के एक अंडाकार आकार बदलना चाहते हैं।
  2. क्रश के बजाय फ़्यूथर में रंग परिवर्तन (हरा = सत्य, लाल = झूठा) होना चाहिए।

पृष्ठभूमि: मेरे पास अलग सेंसर हैं और इन चेकबॉक्स के माध्यम से उन्हें सक्षम/अक्षम करना चाहते हैं। मैंने चेकबॉक्स के बजाय बटन का उपयोग करने के बारे में भी सोचा, लेकिन मुझे लगता है कि फ़ंक्शन चेकबॉक्स द्वारा अधिक दिया गया है।

मुझे आशा है कि मेरा विवरण समझ में आता है। क्या ऐसी शैली को परिभाषित करना संभव है- टेम्पलेट?

तरह का संबंध

एलेक्स

+0

हां यह संभव है और इस सवाल से पहले यहां पूछा गया है (हालांकि मैं एक लिंक खोजने के लिए संघर्ष कर रहा हूं)। शब्दावली "कस्टम टेम्पलेट" है और आप इसे बनाने के लिए अभिव्यक्ति मिश्रण का उपयोग कर सकते हैं। – ChrisF

+0

अभिव्यक्ति मिश्रण ... मैंने इससे पहले कभी नहीं सुना है। बहुत बहुत धन्यवाद, मैं इसे देख लूंगा! – xandi1987

उत्तर

7

आप चेकबॉक्स को अनुकूलित और एक कस्टम टेम्पलेट बनाने की आवश्यकता के लिए जा रहे हैं।
इसके लिए आपको default Checkbox Template को बदलने की आवश्यकता है।

आप जो करना चाहते हैं वह ट्रिगर और पृष्ठभूमि के साथ थोड़ा सा खेलना चाहते हैं जैसे आप चाहते हैं। CheckMark संपत्ति पर ध्यान दें, आप शायद इसे Hidden

+0

ठीक है बहुत बहुत धन्यवाद। मैं चेकमार्क संपत्ति छुपा रहता हूं, और वहां कुछ अंडाकार डालता हूं। ट्रिगर्स के माध्यम से मैं रंग हरा/लाल सेट कर सकता हूं। क्या यह काम कर सकता है? – xandi1987

+0

हां, लाल रंग के लिए डिफ़ॉल्ट पृष्ठभूमि रंग सेट करें, और IsChecked ट्रिगर को संशोधित करें, इसलिए जब यह वास्तविक है तो पृष्ठभूमि को हरे रंग में बदल दें – Blachshma

+0

आपको बहुत धन्यवाद – xandi1987

11

ठीक है मैंने इसे किया! अनुलग्नक में आप मेरा समाधान देख सकते हैं और मैं परिणाम के साथ confortable हूँ। अगर किसी के पास कोई टिप्पणी है, तो कृपया टिप्पणी लिखने में संकोच न करें। आपकी मदद के लिए बहुत बहुत धन्यवाद

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Style TargetType="CheckBox" x:Key="CircleCheckbox"> 
     <Setter Property="Cursor" Value="Hand"></Setter> 
     <Setter Property="Content" Value=""></Setter> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type CheckBox}">     
        <Grid>      
         <Ellipse x:Name="outerEllipse"> 
          <Ellipse.Fill> 
           <RadialGradientBrush> 
            <GradientStop Offset="0" Color="Red"/> 
            <GradientStop Offset="0.88" Color="LightCoral"/> 
            <GradientStop Offset="1" Color="DarkRed"/> 
           </RadialGradientBrush> 
          </Ellipse.Fill> 
         </Ellipse> 
         <Ellipse Margin="10" x:Name="highlightCircle" > 
          <Ellipse.Fill > 
           <LinearGradientBrush > 
            <GradientStop Offset="0" Color="Green"/> 
            <GradientStop Offset="0.5" Color="LightGreen"/> 
            <GradientStop Offset="1" Color="DarkGreen"/> 
           </LinearGradientBrush> 
          </Ellipse.Fill> 
         </Ellipse> 
         <ContentPresenter x:Name="content" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsChecked" Value="True"> 
          <Setter TargetName="highlightCircle" Property="Fill"> 
           <Setter.Value> 
            <LinearGradientBrush StartPoint="0.3,0" EndPoint="0.7,1"> 
             <GradientStop Offset="0" Color="Green"/> 
             <GradientStop Offset="0.5" Color="LightGreen"/> 
             <GradientStop Offset="1" Color="DarkGreen"/> 
            </LinearGradientBrush> 
           </Setter.Value> 
          </Setter> 
          <Setter TargetName="outerEllipse" Property="Fill"> 
           <Setter.Value> 
            <RadialGradientBrush> 
             <GradientStop Offset="0" Color="Green"/> 
             <GradientStop Offset="0.88" Color="LightGreen"/> 
             <GradientStop Offset="1" Color="DarkGreen"/> 
            </RadialGradientBrush> 
           </Setter.Value> 
          </Setter> 
         </Trigger> 
         <Trigger Property="IsChecked" Value="False"> 
          <Setter TargetName="highlightCircle" Property="Fill"> 
           <Setter.Value> 
            <LinearGradientBrush StartPoint="0.3,0" EndPoint="0.7,1"> 
             <GradientStop Offset="0" Color="Red"/> 
             <GradientStop Offset="0.5" Color="LightCoral"/> 
             <GradientStop Offset="1" Color="DarkRed"/> 
            </LinearGradientBrush> 
           </Setter.Value> 
          </Setter> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style>  
</ResourceDictionary> 
+0

इस समाधान के लिए धन्यवाद, यह ठीक काम करता है लेकिन मैं नहीं बदलना चाहता चेक बॉक्स आकार मैं यह कैसे कर सकता हूं? क्या आप मुझे ऐसा करने के लिए कुछ निर्देश दे सकते हैं –

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