我可以从标题下的所有内容获取事件,但无法通过单击标题获取事件。这是 XAML;请注意该事件是针对整个 ListView 的,因此它应该在单击任何内容时激活:
<ListView x:Name="myListView" MouseLeftButtonUp="myListView_MouseLeftButtonUp" Margin="10">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="File Path"
DisplayMemberBinding="{Binding Path=Path}" />
<GridViewColumn Header="File Size"
DisplayMemberBinding="{Binding Path=Size}" />
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
而且事件本身非常简单。只是告诉我发生了一些事情:
private void myListView_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
string output = sender.ToString();
MessageBox.Show(output);
}
Run Code Online (Sandbox Code Playgroud)
单击标题下的任何位置都可以完美响应:
“System.Windows.Controls.ListView Items.Count:0”
单击“文件路径”标题什么也不做。单击“文件大小”标题什么也不做。
MSDN 说:https ://msdn.microsoft.com/en-us/library/vstudio/ms745786( v= vs.100)
.aspx
<ListView x:Name='lv' Height="150" HorizontalAlignment="Center" VerticalAlignment="Center"
GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler">
Run Code Online (Sandbox Code Playgroud)
Visual Studio 说没有 GridViewColumnHeader 这样的东西,所以 MSDN 上的代码都不起作用。
我希望我的程序等待所有进程完成,然后删除一些临时文件.我已经有一段代码可以在一次处理一个进程时执行此操作,但我无法使其适用于多个进程.
我将首先展示有效的代码.此代码正确运行进程,等待它完成,然后删除临时文件:
foreach (string script in scriptList)
{
ProcessStartInfo myProcess = new ProcessStartInfo();
myProcess.FileName = accoreconsolePath;
myProcess.Arguments = "/s \"" + script + "\"";
myProcess.CreateNoWindow = true;
Process myWait = Process.Start(myProcess);
myWait.WaitForExit();
File.Delete(script);
}
Run Code Online (Sandbox Code Playgroud)
以上内容整齐地包含在foreach循环中.我无法工作的是这样的并行版本,其中wait语句在foreach循环之外:
Process myWait;
foreach (string script in scriptList)
{
ProcessStartInfo myProcess = new ProcessStartInfo();
myProcess.FileName = accoreconsolePath;
myProcess.Arguments = "/s \"" + script + "\"";
myProcess.CreateNoWindow = true;
myWait = Process.Start(myProcess);
}
myWait.WaitForExit(); //error: use of unassigned local variable "myWait" …Run Code Online (Sandbox Code Playgroud)