下面是代码:WPF COMBOX数据更新,但UI未更新 - 更新代码
MainWindow.xaml
<ComboBox Grid.Column="1" Margin="2" VerticalContentAlignment="Center" ItemsSource="{Binding Path=LowDLane, Mode=OneWay}"
SelectedIndex="{Binding Path=CurrentLowDLaneIndex, Mode=TwoWay, FallbackValue=0}"
DropDownOpened="onLowDLaneDropDownOpened"
SelectionChanged="onLowDLaneChanged">
</ComboBox>
MainWindow.xaml.cs
public partial class MainWindow : Window
{
public MainWindow(ViewModel model)
{
InitializeComponent();
this.DataContext = model;
}
private void onLowDLaneDropDownOpened(object aSender, EventArgs aE)
{
((ViewModel)this.DataContext).openedDropDown();
}
}
ViewModel.cs更新
public class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChangedHandler;
public List<string> LowDLane
{
get { return mLowDLane; }
set
{
mLowDLane = value;
PropertyChangedHandler.raise(this,()=> LowDLane);
}
}
public void openedDropDown()
{
LowDLane = new List<string> { "1", "2", "3", "4", "5", "6", "7", "8"};
}
}
在其它文件PropertyChangedEventHandler定义:
namespace System.ComponentModel
{
public delegate void PropertyChangedEventHandler(object sender, PropertyChangedEventArgs e);
}
表示将要处理的System.ComponentModel.INotifyPropertyChanged.PropertyChanged 方法当物业发生变化时引发的事件d在组件上。
PropertyChangedEventHandler在其他地方运行良好,所以我不认为这是这里的问题。
我在其他文件中创建了ViewModel
对象,并将其传递给MainWindow
。 当我运行应用程序时,我可以看到LowDLane
属性已更新,但UI未更新。
我看了很多类似的问题,但没有一个解决了我的问题。 有人可以帮忙吗?
你的代码发布不会编译。你声称在'LowDLane'属性设置器中调用'ViewModel.PropertyChanged'事件委托,但这样做需要两个参数。有人可能会发布一个答案,告诉你在那里调用'NotifyPropertyChanged()',但是由于你发布的代码不能编译,显然你并没有发布真正的代码,所以做出任何假设都是没有意义的代码以任何方式表示您的实际代码的样子。解决你的问题,使其包含一个可靠地再现问题的实际,良好[mcve]。 –