【问题标题】:WPF click on label change checkbox isChecked property [duplicate]WPF单击标签更改复选框isChecked属性[重复]
【发布时间】:2013-02-11 18:52:20
【问题描述】:

我是 WPF 的新手,尝试(在我看来)一项简单的任务,但我没有得到它。甚至 Google 也不会帮助我,或者我问错了问题。

我有一个复选框和一个标签;我希望单击标签更改复选框的isChecked 属性。

我希望完全在 XAML 中执行此操作,并且不使用任何代码,因为我希望保持代码隐藏文件中没有不必要的代码。请不要讨论这个问题。我知道这是在代码后面的一行代码!

在标签上使用事件设置器并不能解决问题,因为您只能设置处理程序(当然这是在代码中)。使用故事板没有帮助,因为无法检查属性的实际值。

有人有好的提示吗?也许我忽略了一些东西。请为解决方案提供一些代码sn-p。

【问题讨论】:

  • 这是一个骗局——接受的答案甚至只是引用了另一个问题。

标签: wpf checkbox label ischecked


【解决方案1】:

将此代码粘贴到kaxaml中

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

[参见肯特的SO answer]

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

【讨论】:

  • 我真的忽略了它...谢谢!
  • 我发现在 Windows Phone 上的 WinRT XAML 应用程序中,我不需要使用模板 - 默认模板工作正常(关键是 Content 属性)。
【解决方案2】:

您也可以这样做:

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

一个限制是文本必须在复选框的右侧。

【讨论】:

  • 哇,谢谢,我一直以为一定有更简单的解决方案,就在这里!
  • 我喜欢这个。但是,标签和复选框之间的对齐方式有点偏离。
  • @Muhannad 我知道这已经晚了,但你可以通过在CheckBox 上添加VerticalContentAlignment="Center" 来解决这个问题。请注意,这与影响CheckBox 本身的VerticalAlignment 不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-19
  • 2015-03-28
  • 1970-01-01
  • 1970-01-01
  • 2015-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多