我在WPF C#中有列表框,其中包含一些条目。在这些条目中,我将仅更新单个条目。 我想要的是,当我点击“完成编辑”按钮时,我想只读取更新的(其文本已更改)条目而不是所有其他条目。
我的条目名称是“Harvest_TimeSheetEntry”。我尝试了下面的行,但它读取了所有条目。
Harvest_TimeSheetEntry h = listBox1.SelectedItem as Harvest_TimeSheetEntry;
有什么想法吗?
答案 0 :(得分:0)
我更喜欢通过使用DataBox的ListBox或CurrentItem的SelectedItem属性来解决问题,并将其绑定到我的ViewModel中的属性。
<ListBox ItemsSource="{Binding HarvestTimeSheet}" SelectedItem={Binding CurrentEntry}.../>
<Button Content="Done Editing..." Command="{Binding DoneEditingCommand}"/>
在我的ViewModel中我有
private Harvest_TimeSheetEntry _currentHarvest_TimeSheetEntry;
public Harvest_TimeSheetEntry CurrentHarvest_TimeSheetEntry
{
get { return _currentHarvest_TimeSheetEntry; }
set
{
if (_currentHarvest_TimeSheetEntry == value) return;
_currentHarvest_TimeSheetEntry = value;
RaisePropertyChanged("CurrentHarvest_TimeSheetEntry");
}
}
这是设置为ListBox中的选定项目。
我的ViewModel提供按钮的代码。我正在使用MVVM灯来轻松提供RelayCommand和RaisePropertyChanged。
private RelayCommand _doneEditingCommand;
public RelayCommand DoneEditingCommand
{
get { return _doneEditingCommand ?? (_doneEditingCommand = new RelayCommand(HandleDoneEditing, () => true)); }
set { _doneEditingCommand = value; }
}
public void HandleDoneEditing()
{
if (CurrentHarvest_TimeSheetEntry != null)
//Do whatever you need to do.
}
这是一项更多的工作,但你在流程中获得了如此多的控制和灵活性。