C# 从另一个类运行方法以将列表框滚动到底
我想自动将WPF列表框滚动到底部。我有两个类-一个是Timer.cs,另一个是MainWindow.xaml.cs 这里是Timer.cs:C# 从另一个类运行方法以将列表框滚动到底,c#,wpf,C#,Wpf,我想自动将WPF列表框滚动到底部。我有两个类-一个是Timer.cs,另一个是MainWindow.xaml.cs 这里是Timer.cs: using System; using System.Configuration; using System.IO; using System.Threading; using System.Threading.Tasks; namespace Importer_WPF { class Timer { public sta
using System;
using System.Configuration;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
namespace Importer_WPF
{
class Timer
{
public static readonly string MinutesExecution = ConfigurationManager.AppSettings["MinutesExecution"];
static System.Threading.Timer timer;
public static void StartTimer()
{
var startTimeSpan = TimeSpan.Zero;
var periodTimeSpan = TimeSpan.FromMinutes(Convert.ToDouble(MinutesExecution));
timer = new System.Threading.Timer((e) =>
{
Task.Delay(100).ContinueWith(_ => App.Current.Dispatcher.Invoke(() => MainWindow.Names.Add(DateTime.Now.ToString())));
MainWindow.AutoScroll(); // Problem is here
}, null, startTimeSpan, periodTimeSpan);
}
public static void StopTimer()
{
timer.Change(Timeout.Infinite, Timeout.Infinite);
}
}
}
MainWindow.xaml.cs:
using System;
using System.Collections.ObjectModel;
using System.Configuration;
using System.IO;
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Input;
namespace Importer_WPF
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public static ObservableCollection<string> Names { get; set; }
public static bool IsCheckedYes { get; set; }
[Obsolete]
public MainWindow()
{
InitializeComponent();
}
public void AutoScroll()
{
int itemCount = ConsoleOutput.Items.Count - 1;
if (itemCount > -1)
ConsoleOutput.ScrollIntoView(ConsoleOutput.Items[itemCount]);
}
}
}
使用系统;
使用System.Collections.ObjectModel;
使用系统配置;
使用System.IO;
使用System.Text.RegularExpressions;
使用System.Windows;
使用System.Windows.Input;
名称空间导入程序
{
///
///MainWindow.xaml的交互逻辑
///
公共部分类主窗口:窗口
{
公共静态ObservableCollection名称{get;set;}
公共静态布尔值为{get;set;}
[过时]
公共主窗口()
{
初始化组件();
}
public void AutoScroll()
{
int itemCount=ConsoleOutput.Items.Count-1;
如果(itemCount>-1)
ConsoleOutput.ScrollIntoView(ConsoleOutput.Items[itemCount]);
}
}
}
调试器正在发出以下消息:
严重性代码说明项目文件行抑制状态
错误CS0120非静态字段需要对象引用,
方法或属性“MainWindow.AutoScroll()”
有没有提示如何编辑代码结构,使其不会产生错误?您需要获取内存中mainwindow类实例的引用
((MainWindow)Application.Current.MainWindow).AutoScroll();