2009-06-18 26 views
9

Tam olarak bir butona benzeyen bir CheckBox yapmak istiyorum. İlk zayıf girişimi hiç işe yaramıyor. WPF: "Basamaklı" onay kutusu nasıl oluşturulur?

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

ContentPresenter

çalışmıyor (düğme boş) ve düğme tıklandığında, IsChecked mülkiyet geçiş etmez. Ayrıca IsChecked doğru olduğunda düğmenin nasıl görüneceğini bilmiyorum.

cevap

13

ToggleButton ihtiyaçlarınızı karşılar mı? CheckBox ondan türemiştir ve bu yüzden çok benzerler.

+0

Evet, hiç bir fikrim yoktu. e, bir butona benzeyen bir CheckBox için zaten ayrı bir sınıftı. – Qwertie

6
Sadece istediğimiz gibi şimdi de aynı yorumunu :)

<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> 

Ve Onay Kutusu kontrolünü yazmaya başladım

:

<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

Ben ToggleButton gitmek için yol olduğunu kabul, ama eğer İçeriğinizin örneğinizde görünmesini istiyorsanız, ContentPresenter bildiriminizi şu şekilde değiştirmeyi deneyin:

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

Bu, ControlTemplate bildirimini Qwertie