为了账号安全,请及时绑定邮箱和手机立即绑定

将 checkbox.ischecked 绑定到布尔属性?

将 checkbox.ischecked 绑定到布尔属性?

C#
慕哥6287543 2021-08-22 15:10:03
可有人比我聪明请什么应该是一个简单的编码任务的帮助:绑定.ischecked复选框的一个对象的布尔属性?我创建了一个简单的项目来模拟我在一个更大的项目中尝试做的事情,以进行简单的调试和演示。我有一个复选框,单击该复选框时会设置我的类对象的布尔属性。UI 上的另一个复选框应根据该布尔属性的 T/F 值更新其选中状态。这里有什么问题以及如何修复并使其正常工作?我“相信”这个问题可能是因为我设置的对象的属性与 checkbox.ischecked 属性绑定到的对象不同(???)。这是问题吗,如果是,我该如何解决?VB或XAML端需要实现哪些代码?主窗口.xaml.vbPublic Bools As New Boolean_PropertiesPrivate Sub ckbx1_Click(sender As Object, e As RoutedEventArgs) Handles ckbx1.Click    If ckbx1.IsChecked Then        Bools.Sta1Mode = True    Else Bools.Sta1Mode = False    End IfEnd SubBoolean_Properties 类Implements INotifyPropertyChangedPrivate ModeSta1 As BooleanPublic Event ThePropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChangedProperty Sta1Mode As Boolean    Get        Return ModeSta1    End Get    Set(ByVal value As Boolean)        ModeSta1 = value        RaiseEvent ThePropertyChanged(Me, New PropertyChangedEventArgs("Sta1Mode"))    End SetEnd PropertyXAML<Window x:Class="MainWindow"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"    xmlns:local="clr-namespace:BindBooleanProperty"    mc:Ignorable="d"    xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"    Title="MainWindow" Height="217.032" Width="226.067"><Window.DataContext>    <local:Boolean_Properties/></Window.DataContext><Grid>    <CheckBox Content="Output" HorizontalAlignment="Left" Margin="99.866,134.399,0,0" VerticalAlignment="Top" IsChecked="{Binding Sta1Mode, Mode=OneWay}">        <CheckBox.DataContext>            <local:Boolean_Properties/>        </CheckBox.DataContext>    </CheckBox>    <CheckBox x:Name="ckbx1" Content=" Input" HorizontalAlignment="Left" Margin="99.866,78.932,0,0" VerticalAlignment="Top"/></Grid>
查看完整描述

1 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

您可以使用 WPF 数据绑定:

无需使用 更改它if,只需绑定 XAML 接口并更改类上的属性即可。


Imports System.ComponentModel


Public Class Class1

    Implements INotifyPropertyChanged

    Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged


    Private _ModeSta1 As Boolean

    Property ModeSta1 As Boolean

        Get

            Return _ModeSta1

        End Get

        Set(ByVal value As Boolean)

            _ModeSta1 = value

            RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(NameOf(ModeSta1)))

        End Set

    End Property


End Class

将 CheckBox 更改为仅绑定到ModeSta1属性


<CheckBox x:Name="ckbx1" 

    Content=" Input" 

    Margin="99.866,78.932,0,0" 

    VerticalAlignment="Top" 

    HorizontalAlignment="Left" 

    IsChecked="{Binding Path=ModeSta1, Mode=TwoWay}" 

/>

当 的值ModeSta1改变时,用户界面会更新,如果用户点击复选框,ModeSta1值也会改变。


    Dim c = New Class1

    DataContext = c

    ' You can change the property and this change will be visible on the UI

    c.ModeSta1 = True

//img1.sycdn.imooc.com//6121f8660001aed001130065.jpg

查看完整回答
反对 回复 2021-08-22
  • 1 回答
  • 0 关注
  • 355 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信