【发布时间】:2014-04-28 12:05:03
【问题描述】:
我有一个可观察的集合绑定到组合框。
下面是 Xaml
<ComboBox Name="Combo" HorizontalAlignment="Left" VerticalAlignment="Top" Width="120"
ItemsSource="{Binding Path=coll}"/>
<Button Content="Button" Click="Button_Click_1" HorizontalAlignment="Left" VerticalAlignment="Top"
Width="75" RenderTransformOrigin="0.649,3.417" Margin="10,36,0,0"/>
下面是我的代码
public partial class MainWindow : Window, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged = delegate { };
public ObservableCollection<string> _coll { get; set; }
public ObservableCollection<string> coll
{
get
{
return _coll;
}
set
{
_coll = value;
PropertyChanged(this, new PropertyChangedEventArgs("coll"));
}
}
public MainWindow()
{
InitializeComponent();
coll = new ObservableCollection<string>();
coll.Add("ABC");
coll.Add("AAA");
coll.Add("BBB");
coll.Add("KKK");
Combo.SelectedItem = coll[0];
DataContext = this;
}
public MainWindow(string data)
: this()
{
coll.Add(data);
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
Window1 window = new Window1();
window.Show();
}
}
现在我正在打开按钮单击事件的新窗口,并且我将数据从第二个窗口传递到主窗口,在这种情况下绑定不起作用
第二个窗口 Xaml
<TextBox Name="txtBox" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap"
VerticalAlignment="Top" Width="120"/>
<Button Content="Button" Click="Button_Click_1" HorizontalAlignment="Left"
VerticalAlignment="Top" Width="75" Margin="10,28,0,0"/>
代码
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
MainWindow obj = new MainWindow(txtBox.Text);
this.Close();
}
}
【问题讨论】:
-
你到底想做什么,不清楚。
-
我正在将值从 Window1 收集到集合中,并且在关闭 window1 组合框后不会使用我们从 window1 输入的值进行更新
-
是的,它肯定会发生,因为你创建了一个新的主窗口,所以以前的窗口不会被更新。我会添加一个代码。
-
好的,谢谢 Harshana Narangoda,你能建议我如何处理这种情况吗?我undersatnd MainWindow 实例已更改
-
我可以知道点击第二个窗口中的按钮后,第一个窗口是否有两个实例?
标签: c# wpf data-binding