gpt4 book ai didi

c# - WPF绑定(bind)问题

转载 作者:行者123 更新时间:2023-11-30 17:23:09 24 4
gpt4 key购买 nike

我刚开始使用 WPF 和绑定(bind),但有一些我不理解的奇怪行为。

示例 1:一个非常简单的 WPF 表单,只有一个组合框 (name = C) 和构造函数中的以下代码:

    public Window1()
{
InitializeComponent();

BindingClass ToBind = new BindingClass();
ToBind.MyCollection = new List<string>() { "1", "2", "3" };

this.DataContext = ToBind;

//c is the name of a combobox with the following code :
//<ComboBox Name="c" SelectedIndex="0" ItemsSource="{Binding Path=MyCollection}" />
MessageBox.Show(this.c.SelectedItem.ToString());
}

你能解释一下为什么这会因为 this.c.SelectedItem 为 NULL 而崩溃吗。

所以我虽然......没问题,因为它在构造函数中,让我们将代码放在加载表单事件中:

        public Window1()
{
InitializeComponent();
}

private void Window_Loaded(object sender, RoutedEventArgs e)
{
BindingClass ToBind = new BindingClass();
ToBind.MyCollection = new List<string>() { "1", "2", "3" };
this.DataContext = ToBind;
MessageBox.Show(this.c.SelectedItem.ToString());
}

同样的问题this.c.SelectedItem is null...

备注:如果我删除 Messagebox 东西,那么绑定(bind)工作正常,我在组合框中有值。这就像在设置数据上下文后是否需要“一些”时间。但是如何知道绑定(bind)何时完成?

谢谢你的帮助。

最佳答案

因为selectionchanged还没有触发,所以selecteditem还是null。

private void c_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
MessageBox.Show(this.c.SelectedItem.ToString());
}

如果您是 WPF 的新手,我建议您去看看 MVVM 模式。这里有一个非常好的介绍视频:http://blog.lab49.com/archives/2650

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

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