WPF点击标签改变复选框isChecked属性

9
我刚接触WPF,并尝试(在我看来)一个简单的任务,但我没有成功。即使是谷歌也没有帮助我,或者说我问错了问题。
我有一个复选框和一个标签;我希望单击标签时更改复选框的isChecked属性。
我想完全使用XAML完成此操作,而不需要编写代码,因为我希望保持代码干净,没有不必要的代码,请不要讨论这一点。我知道在代码后面只需一行代码就能完成此操作!
在标签上使用事件设置器无法解决问题,因为您只能设置处理程序(当然在代码后面)。使用故事板也无法帮助,因为没有办法检查属性的实际值。
有人有好的提示吗?也许我忽略了什么。请提供某些代码片段以解决问题。

这是一个重复问题 - 接受的答案甚至只引用了另一个问题。 - StayOnTarget
2个回答

12

你也可以这样做:

<CheckBox>
    <Label Content="Your text here"/>
</CheckBox>

然而,限制之一是文本必须在复选框的右侧。


哇,谢谢!我一直认为一定有更简单的解决方案,现在找到了! - SpeziFish
我很喜欢这个。不过标签和复选框之间的对齐有点问题。 - Muhannad
2
@Muhannad 我知道有点晚了,但是你可以通过在 CheckBox 上添加 VerticalContentAlignment="Center" 来修复它。请注意,这与影响 CheckBox 本身的 VerticalAlignment 是不同的。 - ZethMatthews

7

将此代码粘贴到kaxaml中

您会看到单击标签切换复选框。

[查看Kent的SO答案]

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <StackPanel>
    <CheckBox IsChecked="{Binding IsChecked, ElementName=checkbox}" Content="Hello">
        <CheckBox.Template>
            <ControlTemplate TargetType="CheckBox">
                <ContentPresenter/>
            </ControlTemplate>
        </CheckBox.Template>
    </CheckBox>
    <CheckBox x:Name="checkbox" Content="A normal checkbox"/>
</StackPanel>
</Page>

我真的忽略了它...谢谢! - sandkasten
3
在Windows Phone上的WinRT XAML应用程序中,我发现我不需要使用模板 - 默认模板可以正常工作(关键在于Content属性)。 - MikeBaz - MSFT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接