繁体   English   中英

将UIElement绑定到本地数据

[英]Binding UIElement to local Data

我有一个类“ BoolValue”,我在其中声明一个布尔值并将其转换为Dependency Property(希望我已经做对了)现在在xaml中,我有一个复选框要根据布尔值进行检查/取消选中。 我邀请了整个代码专家,请帮忙。

<StackPanel Height="287" HorizontalAlignment="Left" Margin="78,65,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="309" DataContext="xyz" >
  <CheckBox Content="" Height="71" Name="checkBox1" IsChecked="{Binding Path=IsCkecked, Mode=TwoWay}"/>
</StackPanel>

这是课程

public class BoolValue : INotifyPropertyChanged
    {        
        private bool _isCkecked;

        public bool IsCkecked
        {
            get { return _isCkecked; }
            set
            {
                if (value == _isCkecked)
                    return;

                _isCkecked = value;
                RaisePropertyChanged("IsCkecked");
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected void RaisePropertyChanged(string property)
        {
            PropertyChangedEventArgs args = new PropertyChangedEventArgs(property);
            var handler = this.PropertyChanged;
            //handler(this, args);
            if (handler != null)
            {
                handler(this, args);
            }
        }       
    }

您的StackPanel的实际DataContext是什么? 看起来您在寻找属性更改,但在不同的DataContext

提供BoolValue是您的CheckBox的DataContext ,下面应该可以工作:

public class BoolValue : INotifyPropertyChanged
{ 
    private bool isChecked;
        public bool IsChecked
        {
            get { return isChecked; }
            set
            {
                if (isChecked != value)
                {
                    isChecked = value;
                    NotifyPropertyChanged("IsChecked");
                }
            }
        }


    public event PropertyChangedEventHandler PropertyChanged;
        public void NotifyPropertyChanged(String propertyName)
        {
            // take a copy to prevent thread issues
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(propertyName));
            }
        }
}

XAML:

<CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay}"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM