2009-06-18 9 views
9

मैं एक चेकबॉक्स बनाना चाहता हूं जो बिल्कुल एक बटन की तरह दिखता है। मेरा प्रारंभिक कमजोर प्रयास बिल्कुल काम नहीं करता है।डब्ल्यूपीएफ: "पुश जैसा" चेकबॉक्स कैसे बनाएं?

<CheckBox x:Name="test"> 
    Testing! 
    <CheckBox.Template> 
     <ControlTemplate> 
      <Button> 
       <ContentPresenter/> 
      </Button> 
     </ControlTemplate> 
    </CheckBox.Template> 
</CheckBox> 

ContentPresenter काम नहीं कर रहा (बटन खाली है) और बटन क्लिक होने, IsChecked संपत्ति को चालू नहीं करता है। साथ ही, मुझे नहीं पता कि Ischecked सच होने पर बटन को कैसे धक्का देना है।

उत्तर

13

क्या ToggleButton आपकी आवश्यकताओं के अनुरूप होगा? चेकबॉक्स से निकला है, और इसलिए वे बहुत समान हैं।

+0

हां, मुझे नहीं पता था ई पहले से ही एक चेकबॉक्स के लिए अलग वर्ग था जो एक बटन की तरह दिखता है। – Qwertie

6

मैं सिर्फ एक ही टिप्पणी :)

<ToggleButton Name="tb" Height="45" Width="45"> 
     <ToggleButton.Style> 
      <Style TargetType="{x:Type ToggleButton}"> 
       <Setter Property="Content" Value="False"/> 
       <Style.Triggers> 
        <Trigger Property="IsChecked" Value="True"> 
         <Setter Property="Content" Value="True"/> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </ToggleButton.Style> 
    </ToggleButton> 

और अब के रूप में आप चाहते थे, चेकबॉक्स नियंत्रण लिखने के लिए शुरू कर दिया है:

<CheckBox> 
     <CheckBox.Template> 
      <ControlTemplate TargetType="CheckBox"> 
       <ToggleButton x:Name="toggleButton"> 
       </ToggleButton> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsChecked" Value="True" SourceName="toggleButton"> 
         <Setter Property="Content" Value="True"/> 
        </Trigger> 
        <Trigger Property="Content" Value="True"> 
         <Setter Property="IsChecked" Value="True"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </CheckBox.Template> 
    </CheckBox> 
2

मैं मानता हूँ कि ToggleButton जाने का रास्ता है, लेकिन अगर आप अपनी सामग्री को अपने उदाहरण में दिखाना चाहते हैं, इस पर अपनी सामग्री प्रस्तुतिकरण घोषणा को बदलने का प्रयास करें:

<ContentPresenter Content="{TemplateBinding Content}" /> 
+0

यह काम करता है अगर मैं कंट्रोल टेम्पलेट घोषणा को Qwertie