2015-10-27 63 views
1

我与后续的XAML一个WPF应用程序如何单击文本框(或标签)来切换复选框

<CheckBox IsChecked="{Binding IsTime}" /> 
<TextBlock Text="Time" /> 

我想是,如果用户点击文本框,它会切换复选框。以同样的方式,我们可以在MVC.NET中使用labelcheckbox(以及HTML)

我可以在后面的代码中使用事件,但我使用MVVM,因此不想使用那些事件。

我的问题和Change a Label's behavior to support toggling by click in WPF之间的区别是,我在我的复选框已经绑定的东西......

我希望这方面的努力提供什么,我试图做

<CheckBox IsChecked="{Binding IsTime}" x:Name="Checky" /> 
<TextBlock Text="Time"> 
    <TextBlock.Style> 
     <Style> 
      <Style.Triggers> 
       <Trigger Property="TextBlock.MouseDown" Value="True"> 
        <Setter TargetName="Checky" Property="IsChecked" Value=Not IsTime> //WHAT TO DO HERE 
        </Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 
一个清晰的概念

回答

0

使用代码在你所提供的链接,并结合IsChecked相同的特性:

<StackPanel> 
    <CheckBox x:Name="checkbox" IsChecked="{Binding IsTime}"/> 

    <CheckBox IsChecked="{Binding IsTime}" Content="Hello"> 
     <CheckBox.Template> 
      <ControlTemplate TargetType="CheckBox"> 
       <ContentPresenter/> 
      </ControlTemplate> 
     </CheckBox.Template> 
    </CheckBox> 
</StackPanel> 

你知道你有一个亲的内容在CheckBox可以模板化,以达到预期的效果,而无需使用多个CheckBox。

1

您可以将TextBox和其他控件放在CheckBox中。通过这种方式单击文本框也会切换复选框。这里有一个CheckBox里有多个项目的例子,但是你当然可以只有TextBox在里面。

<CheckBox Padding="2" IsChecked="{Binding IsTime}"> 
    <StackPanel Orientation="Horizontal"> 
     <Image Width="24" Height="24" Source="someimage"/> 
     <TextBlock Text="Time"/> 
    </StackPanel> 
</CheckBox>