gpt4 book ai didi

c# - WPF 简单绑定(bind)

转载 作者:太空宇宙 更新时间:2023-11-03 22:08:31 25 4
gpt4 key购买 nike

我正在尝试将我的控制台应用程序转换为漂亮的 WPF GUI。这段代码有点卡住了,想知道是否有人可以提供帮助?

在我的 xaml 中我有这个:

<CheckBox IsChecked="{Binding CL.LoggedIn}"></CheckBox>

尝试将复选框的值绑定(bind)到 CL.LoggedIn 的值。 CL 是我在引用类库中的 ConnectionLibrary.cs 类。

在 xaml 页面的代码中,我声明 CL 如下:

public ConnectionLibrary CL = new ConnectionLibrary();

在连接库类中,我将 :INotifyPropertyChanged 添加到类声明中并添加了以下代码:

public event PropertyChangedEventHandler PropertyChanged;
// Create the OnPropertyChanged method to raise the event
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}

我已将 LoggedIn 属性更改为现在如下所示:

private bool loggedIn;
public bool LoggedIn {
get { return loggedIn; }
set { loggedIn = value; OnPropertyChanged("LoggedIn"); }
}

但是,它似乎在我的 xaml 中不起作用?我在输出窗口中没有收到任何绑定(bind)错误,但它没有正确反射(reflect) LoggedIn 的值。

有什么想法吗?

谢谢!

最佳答案

您是否设置了 View 的数据上下文?在 XAML 文件的代码隐藏中,您需要执行以下操作:

this.DataContext = CL;

那么绑定(bind)就是:

<CheckBox IsChecked="{Binding LoggedIn}"></CheckBox>

绑定(bind)将在 DataContext 中的对象上找到命名路径(即 LoggedIn)。

编辑:默认绑定(bind)是单向的,这意味着它只会从您的 ViewModel 更新。
对于可以输入数据的控件(即:TextBox、CheckBox...),您可以将 Binding 设置为“TwoWay”。绑定(bind)表达式变为:

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

现在,只要 UI 中的 Checked 状态发生变化,它就会反射(reflect)在您的 ViewModel 中。

关于c# - WPF 简单绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7545193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com