我正在创建一个应用程序来显示未运行的 Windows 服务列表。问题是这些服务应该反映发生的任何变化,即如果服务启动,则应该从显示的列表中删除该服务。
我使用了 ListView,代码如下:
<Window.Resources>
<ObjectDataProvider ObjectType="{x:Type local:NotifiableServiceController}"
MethodName="GetServices" x:Key="ManageServices">
</ObjectDataProvider>
</Window.Resources>
<Grid>
<ListView Name="lstViewServices" Width="Auto" ItemsSource="{Binding Source={StaticResource ManageServices}}"
SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn Header="SoftOne Services" DisplayMemberBinding="{Binding Path=DisplayName}" />
<GridViewColumn Header="Status">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Status}">
</TextBlock>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
以及获取服务列表的功能:
public static ObservableCollection<NotifiableServiceController> GetServices()
{
ObservableCollection<NotifiableServiceController> oaServices = new ObservableCollection<NotifiableServiceController>();
//Retrieving the services starting with "SQL"
foreach (ServiceController sc in ServiceController.GetServices().Where(p => p.DisplayName.StartsWith("SQL")))
{
oaServices.Add(new NotifiableServiceController(sc));
}
return oaServices;
}
NotifiableServiceController
正在按时间间隔更新以刷新关联 Windows 服务的状态。但只有第一次检索到的服务(来自GetServices()
函数)会被刷新。
到目前为止一切都很好。我只需要在 Listview 中显示停止的进程,我认为这可以使用 XAML 中的样式或触发器来完成吗?如果是,如何?
谢谢你的时间。