我已经问了几次这个问题,但从来没有设法找到它的底部。希望有人可以帮助我,因为我是编程和C#的新手。
我有一个按钮,会将Tasks
添加到Task<List>
,然后使用Datagrid
和Task ID
等一些值填充Task Status
(以前的Listview) Task
。我添加的每个method
都包含相同 Status
,应该更新Task index
的相关namespace Something
{
public class listView
{
private static ObservableCollection<listItems> _myList = new ObservableCollection<listItems>();
public static ObservableCollection<listItems> myList
{
get { return _myList; }
}
private static string _status;
public class listItems : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged([System.Runtime.CompilerServices.CallerMemberName] string propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public int id { get; set; }
public string status
{
get { return _status; }
set
{
if (_status != value)
{
_status = value;
OnPropertyChanged();
}
}
}
}
}
。
请参阅下文。
我的列表视图:
public MainWindow()
{
InitializeComponent();
dataGrid.ItemsSource = listView.myList;
}
private void create_btn_Click(object sender, RoutedEventArgs e)
{
lvl.status = "Task ready to start";
var repeat = int.Parse(taskNumber.Text);
addTasks(repeat);
run_btn.IsEnabled = true;
create_btn.IsEnabled = false;
taskNumber.IsEnabled = false;
}
private void run_btn_Click(object sender, RoutedEventArgs e)
{
foreach (var Task in myTasks)
{
Task.Start();
}
}
public void addTasks(int repeatCount)
{
List<Task> myTasks = pTask.tasks();
for (int i = 0; i < repeatCount; i++)
{
lvl.id++;
int x = lvl.id;
myTasks.Add(new Task(() => p.myAction(x)));
listView.myList.Add(new listView.listItems
{
id = lvl.id,
status = lvl.status,
});
}
}
我的mainWindow.xaml.cs
method
然后在我的updateStatus
调用STATUS
来查找要更新的行 public static Action<int> myAction = x => doMethod(x);
public static void doMethod(int rowIndex)
{
updateStatus(rowIndex, "testing");
}
public static void updateStatus(int row, string text)
{
listView.myList[row].status = text;
}
。
value
我怀疑这不起作用,因为传递到X
的{{1}}每次iteration
都会更新,导致datagrid
中的最后一行更新?
请有人可以为我提供替代方案,让task method
的每个row index
更新与task index
匹配吗?
谢谢
PS:请放轻松我,因为我自学了一个非常新的编程/ C#...答案 0 :(得分:0)
在listView
课程中,您有private static string _status;
因此,每个列表项都可以访问此静态字段,而OnPropertyChanged
只发生一次(请参阅if (_status != value)
在status
内查看}
因此,请尝试将私有字段private string _status;
添加到listItems
类