以下是代码:
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的方法 在组件上更改属性时引发的事件。
PropertyChangedEventHandler在其他地方运作良好,所以我不认为这是问题所在。
我在其他文件中创建了ViewModel
对象,并将其传递给MainWindow
。
当我运行应用程序时,我可以看到LowDLane
属性已更新,但UI未更新。
我看了很多类似的问题,但没有一个能解决我的问题。 有人可以帮忙吗?
答案 0 :(得分:0)
将 UpdateSourceTrigger 属性添加到组合框itemSource绑定,并将Mode设置为TwoWay。
ItemsSource="{Binding Path=LowDLane, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
如果这解决了这个问题,请告诉我。
答案 1 :(得分:0)