下面是代碼: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]。 –