我有一個列表框中有幾個項目。當雙擊每個項目時,用戶可以選擇編輯項目(項目文本)。現在,一旦我更新該項目,我的項目在列表框不會得到更新。ListBox項無法在WPF中刷新?
alt text http://i48.tinypic.com/dgq5ba.png
的第一個窗口(其中一個具有列表框)是MainWindow.xaml文件,第二個窗口是在EditTaskView.xaml(其中一個讓我們編輯的項目文本)文件。
,在列表中顯示項目的代碼是:
Main.Windows.cs
公共靜態的ObservableCollection任務列表;
public void GetTask()
{
TaskList = new ObservableCollection<Task>
{
new Task("Task1"),
new Task("Task2"),
new Task("Task3"),
new Task("Task4")
};
lstBxTask.ItemsSource = TaskList;
}
私人無效lstBxTask_MouseDoubleClick(對象發件人,MouseButtonEventArgs E) {
var selectedTask = (Task)lstBxTask.SelectedItem;
EditTask.txtBxEditedText.Text = selectedTask.Taskname;
EditTask.PreviousTaskText = selectedTask.Taskname;
EditTask.Visibility = Visibility.Visible;
}
顯示的列表中的XAML代碼:
<ListBox x:Name="lstBxTask" Style="{StaticResource ListBoxItems}" MouseDoubleClick="lstBxTask_MouseDoubleClick">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Rectangle Style="{StaticResource LineBetweenListBox}"/>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Taskname}" Style="{StaticResource TextInListBox}"/>
<Button Name="btnDelete" Style="{StaticResource DeleteButton}" Click="btnDelete_Click"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<ToDoTask:EditTaskView x:Name="EditTask" Grid.Row="1" Grid.RowSpan="2" Grid.ColumnSpan="2" Visibility="Collapsed"/>
在TaskEditView.xaml保存按鈕執行此:
public string PreviousTaskText { get; set; }
private void btnSaveEditedText_Click(object sender, RoutedEventArgs e)
{
foreach (var t in MainWindow.TaskList)
{
if (t.Taskname == PreviousTaskText)
{
t.Taskname = txtBxEditedText.Text;
}
}
Visibility = Visibility.Collapsed;
}
TaskList是ObservableCollection,我雖然一旦更新了UI的值就刷新了。但似乎沒有這樣工作。
我失去了什麼?
+1您是一名快速學習者。 – Amsakanna 2010-05-25 05:30:44