WPF数据绑定CheckBox.IsChecked

Ada*_*gen 7 data-binding wpf checkbox

如何将CheckBox的IsChecked成员绑定到表单中的成员变量?

(我意识到我可以直接访问它,但我正在尝试学习数据绑定和WPF)

以下是我失败的尝试.

XAML:

<Window x:Class="MyProject.Form1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Title" Height="386" Width="563" WindowStyle="SingleBorderWindow">
<Grid>
    <CheckBox Name="checkBoxShowPending" 
              TabIndex="2" Margin="0,12,30,0" 
              Checked="checkBoxShowPending_CheckedChanged" 
              Height="17" Width="92" 
              VerticalAlignment="Top" HorizontalAlignment="Right" 
              Content="Show Pending" IsChecked="{Binding ShowPending}">
    </CheckBox>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

码:

namespace MyProject
{
    public partial class Form1 : Window
    {
        private ListViewColumnSorter lvwColumnSorter;

        public bool? ShowPending
        {
            get { return this.showPending; }
            set { this.showPending = value; }
        }

        private bool showPending = false;

        private void checkBoxShowPending_CheckedChanged(object sender, EventArgs e)
        {
            //checking showPending.Value here.  It's always false
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Wil*_*ins 12

<Window ... Name="MyWindow">
  <Grid>
    <CheckBox ... IsChecked="{Binding ElementName=MyWindow, Path=ShowPending}"/>
  </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

注意我添加了一个名称<Window>,并更改了CheckBox中的绑定.DependencyProperty如果您希望它在更改时能够更新,您还需要实现ShowPending .

  • 如果使用ViewModel,通常会在View(或XAML)中将DataContext设置为ViewModel,只需执行`IsChecked ="{Binding ShowPending}"` (4认同)