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)
但它似乎没有用.你能帮助我吗?
<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)
您需要实现某种形式的更改通知,以便您的复选框“了解”属性的任何更改。最好的选择是使用众多 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 上的数据绑定概述...
| 归档时间: |
|
| 查看次数: |
13643 次 |
| 最近记录: |