-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNodeTemplates.xaml
82 lines (82 loc) · 4.85 KB
/
NodeTemplates.xaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ia="http://schemas.microsoft.com/expression/2010/interactions"
xmlns:b="clr-namespace:SuperSocket.ServerManager.Client.Behaviors"
xmlns:cv="clr-namespace:SuperSocket.ServerManager.Client.Converters"
xmlns:c="clr-namespace:SuperSocket.ServerManager.Client">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="NodeTemplatesCommon.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
<cv:ToStringConverter x:Key="ToStringConverter"></cv:ToStringConverter>
<DataTemplate x:Key="NodeTemplateConnected">
<StackPanel Orientation="Vertical">
<c:NodeInfo></c:NodeInfo>
<DataGrid SelectionMode="Single"
VerticalAlignment="Stretch"
IsReadOnly="True"
SelectionUnit="FullRow"
ItemsSource="{Binding Instances}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<ia:CallMethodAction TargetObject="{Binding}" MethodName="DataGridLoaded"></ia:CallMethodAction>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Resources>
<!--ContextMenu-->
<ContextMenu x:Key="InstanceRowContextMenu">
<i:Interaction.Behaviors>
<b:ContextMenuBehavior></b:ContextMenuBehavior>
</i:Interaction.Behaviors>
<MenuItem Header="Start" Command="{Binding StartCommand}" CommandParameter="{Binding}"/>
<MenuItem Header="Stop" Command="{Binding StopCommand}" CommandParameter="{Binding}"/>
</ContextMenu>
</DataGrid.Resources>
<DataGrid.RowStyle>
<Style x:Name="RowWithContextMenu" TargetType="DataGridRow" BasedOn="{StaticResource RowStyle}">
<Setter Property="ContextMenu" Value="{StaticResource InstanceRowContextMenu}"></Setter>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Name" IsReadOnly="True" SortMemberPath="Name" Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Rectangle VerticalAlignment="Center" Name="StatusFlag" Margin="5" Width="10" Height="10" Fill="Green" />
<TextBlock VerticalAlignment="Center" Text="{Binding Name}"></TextBlock>
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=Values.IsRunning, Converter={StaticResource ToStringConverter}}" Value="False">
<Setter TargetName="StatusFlag" Property="Fill" Value="Gray" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="NodeContainerTemplate">
<StackPanel Orientation="Vertical" Background="White">
<c:NodeHeader></c:NodeHeader>
<ContentControl Name="PlaceHolderContainer" Content="{Binding}"
ContentTemplate="{StaticResource NodeTemplateState}"
HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch">
</ContentControl>
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding State}" Value="Connected">
<Setter TargetName="PlaceHolderContainer"
Property="ContentTemplate"
Value="{StaticResource NodeTemplateConnected}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding State}" Value="Offline">
<Setter TargetName="PlaceHolderContainer"
Property="ContentTemplate"
Value="{StaticResource NodeTemplateOffline}"></Setter>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ResourceDictionary>