我有一个包含以下XAML的WPF应用程序
<CheckBox IsChecked="{Binding IsTime}" />
<TextBlock Text="Time" />
我想要的是,如果用户点击文本框,它将切换CheckBox。以同样的方式,我们可以在MVC.NET中使用label
和checkbox
(以及HTML)
我可以使用代码中的事件执行此操作,但我使用的是MVVM,因此,不想使用这些事件。
我的问题和Change a Label's behavior to support toggling by click in WPF之间的区别在于我已经将我的CheckBox绑定到某个东西......
我希望这项努力可以让我更清楚地了解我要做的事情
<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 :(得分:1)
您可以将TextBox和其他控件放在CheckBox中。这样单击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>
答案 1 :(得分: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
上有一个Content属性,可以模板化以实现所需的效果,而无需使用多个CheckBox。