実行されていない 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()
が更新されます。
それは今まで大丈夫です。リストビューに表示されているプロセスを停止するだけでよいのですが、XAML でスタイルまたはトリガーを使用して実行できると思いますか? はいの場合、どのように?
御時間ありがとうございます。