XAML绑定到属性

ims*_*vko 8 c# data-binding xaml microsoft-metro windows-runtime

我的XAML + C#Windows应用商店应用中有复选框.我也有bool属性:WindowsStoreTestApp.SessionData.RememberUser这是公共的和静态的.

我希望复选框的属性IsChecked与此bool属性保持一致(或绑定或映射).

我试过这个:XAML

<CheckBox x:Name="chbRemember1"  IsChecked="{Binding Mode=TwoWay}"/>
Run Code Online (Sandbox Code Playgroud)

C#

chbRemember1.DataContext = SessionData.RememberUser;
Run Code Online (Sandbox Code Playgroud)

财产代码:

namespace WindowsStoreTestApp
{
    public class SessionData
    {
        public static bool RememberUser { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.你能帮助我吗?

ast*_*ght 5

<CheckBox x:Name="chbRemember1"  IsChecked="{Binding Path=RememberUser, Mode=TwoWay}"/>
Run Code Online (Sandbox Code Playgroud)

 

public class SessionData : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(string info)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(info));
    }


    bool _rememberUser;
    public bool RememberUser
    {
        get
        {
            return _rememberUser;
        }
        set
        {
            _rememberUser = value;
            NotifyPropertyChanged("RememberUser");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Dea*_*uga 4

您需要实现某种形式的更改通知,以便您的复选框“了解”属性的任何更改。最好的选择是使用众多 MVVM 框架之一,如果没有,请INotifyPropertyChanged在您的 ViewModel 中实现。

另外,通常在 WPF 中,我们不会设置各个控件的 DataContext,而是将窗口或用户控件的 DataContext 设置为 ViewModel...

以下是通过 MVVM 框架之一提供更改通知的属性示例:

private bool createTrigger;
public bool CreateTrigger
{
    get { return createTrigger; }
    set { createTrigger = value; NotifyPropertyChanged(m => m.CreateTrigger); }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,简单的自动实现的属性不能用于 WPF 中的数据绑定...

我建议浏览MSDN 上的数据绑定概述...