checkbox wpf 绑定数组_WPF复选框绑定

本文介绍了如何使用WPF的依赖属性实现复选框(checkbox)与数组的绑定。通过创建一个名为IsCheckBoxChecked的依赖属性,并在XAML中将复选框的IsChecked属性绑定到该属性,实现了当复选框状态改变时更新成员变量的功能。同时,示例展示了如何在代码-behind中定义和使用依赖属性。
摘要由CSDN通过智能技术生成

While it is trivial to store a checkbox's checked state in a variable using the checkbox's Click event, how would I do it via databinding? All the examples I have found have the UI updated from some datasource, or bind one control to another; I want to update a member variable when the checkbox is clicked.

TIA for any pointers...

解决方案

You need a dependency property for this:

public BindingList Users

{

get { return (BindingList)GetValue(UsersProperty); }

set { SetValue(UsersProperty, value); }

}

public static readonly DependencyProperty UsersProperty =

DependencyProperty.Register("Users", typeof(BindingList),

typeof(OptionsDialog));

Once that is done, you bind the checkbox to the dependency property:

For that to work you have to name your Window or UserControl in its openning tag, and use that name in the ElementName parameter.

With this code, whenever you change the property on the code side, you will change the textbox. Also, whenever you check/uncheck the textbox, the Dependency Property will change too.

EDIT:

An easy way to create a dependency property is typing the snippet propdp, which will give you the general code for Dependency Properties.

All the code:

XAML:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Window1" x:Name="window1" Height="300" Width="300">

IsChecked="{Binding ElementName=window1, Path=IsCheckBoxChecked}"

>Bound CheckBox

ContentStringFormat="Is checkbox checked? {0}">

C#:

using System.Windows;

namespace StackOverflowTests

{

///

/// Interaction logic for Window1.xaml

///

public partial class Window1 : Window

{

public bool IsCheckBoxChecked

{

get { return (bool)GetValue(IsCheckBoxCheckedProperty); }

set { SetValue(IsCheckBoxCheckedProperty, value); }

}

// Using a DependencyProperty as the backing store for

//IsCheckBoxChecked. This enables animation, styling, binding, etc...

public static readonly DependencyProperty IsCheckBoxCheckedProperty =

DependencyProperty.Register("IsCheckBoxChecked", typeof(bool),

typeof(Window1), new UIPropertyMetadata(false));

public Window1()

{

InitializeComponent();

}

}

}

Notice how the only code behind is the Dependency Property. Both the label and the checkbox are bound to it. If the checkbox changes, the label changes too.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值