123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- <Window x:Class="IPLocationServerTool.MainWindow"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:view="clr-namespace:IPLocationServerTool.View"
- xmlns:extensions="clr-namespace:IPLocationServerTool.Extensions"
- mc:Ignorable="d"
- Title="{extensions:Translater IpTool}" Height="600" Width="1000">
- <Window.Resources>
- <ResourceDictionary>
- <LinearGradientBrush x:Key="LinearGradientBlueBackground" EndPoint="0.5,1" StartPoint="0.5,0">
- <GradientStop Color="#FF377FED" Offset="0" />
- <GradientStop Color="#FF074CC0" Offset="1" />
- </LinearGradientBrush>
- <SolidColorBrush x:Key="MyBtnBorderColor" Color="#FF2D78F4"></SolidColorBrush>
- <SolidColorBrush x:Key="MyBtnHoverBackgroundColor" Color="#FF317EF3"></SolidColorBrush>
- <Style x:Key="ButtonStyle" TargetType="{x:Type Button}" >
- <Setter Property="Background" Value="{StaticResource LinearGradientBlueBackground}"></Setter>
- <Setter Property="Foreground" Value="White"></Setter>
- <Setter Property="BorderBrush" Value="{StaticResource MyBtnBorderColor}"></Setter>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type Button}">
- <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"
- SnapsToDevicePixels="true" CornerRadius="6,6,6,6">
- <ContentPresenter x:Name="contentPresenter"
- Focusable="False"
- HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
- Margin="{TemplateBinding Padding}"
- RecognizesAccessKey="True"
- SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
- VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
- </Border>
- <ControlTemplate.Triggers>
- <Trigger Property="IsMouseOver" Value="true">
- <Setter Property="Background" TargetName="border" Value="{StaticResource MyBtnHoverBackgroundColor}"/>
- </Trigger>
- </ControlTemplate.Triggers>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- <CollectionViewSource x:Key='LocationSource' Source="{Binding LocationInfoCollection}">
- <CollectionViewSource.GroupDescriptions>
- <PropertyGroupDescription PropertyName="ServerAddress"/>
- </CollectionViewSource.GroupDescriptions>
- </CollectionViewSource>
- </ResourceDictionary>
- </Window.Resources>
- <Grid Margin="10">
- <Grid.Resources>
- <extensions:ListToStringConverter x:Key="ListToStringConverter" />
- <Style TargetType="{x:Type view:MultiSelectComboBox}" x:Key="KeyMultiSelectComboBox">
- <Setter Property="DisplayMemberPath" Value="Description"/>
- <Setter Property="Height" Value="30"/>
- <Setter Property="BorderBrush" Value="Gray"/>
- <Setter Property="MaxWidth" Value="500"/>
- </Style>
- </Grid.Resources>
- <Grid.RowDefinitions>
- <RowDefinition Height="30"/>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="*"/>
- <RowDefinition Height="*"/>
- </Grid.RowDefinitions>
- <StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Center">
- <TextBlock Text="HttpServer:" Margin="0 0 10 0" VerticalAlignment="Center"></TextBlock>
- <TextBox Width="200" Text="{Binding HttpServerAddress}" VerticalContentAlignment="Center"/>
- <Button Content="{extensions:Translater Save}" Width="100" Command="{Binding SaveHttpServerCommand}" Style="{StaticResource ButtonStyle}" Margin="10,0"></Button>
- <Button Content="{extensions:Translater Run}" Width="100" Command="{Binding RunHttpServerCommand}" Style="{StaticResource ButtonStyle}" Margin="10,0"></Button>
- <Button Content="{extensions:Translater Stop}" Width="100" Command="{Binding StopHttpServerCommand}" Style="{StaticResource ButtonStyle}" Margin="10,0"></Button>
- </StackPanel>
- <Grid Grid.Row="1">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="220"/>
- <ColumnDefinition Width="Auto"/>
- <ColumnDefinition Width="150"/>
- </Grid.ColumnDefinitions>
- <StackPanel Grid.Column="0" VerticalAlignment="Top" Orientation="Vertical" DataContext="{Binding LocationViewModel}">
- <TextBlock Text="{extensions:Translater ServerAddress}" HorizontalAlignment="Left" Margin="10"/>
- <TextBox Height="25" Width="200" Text="{Binding HttpServerAddress}" HorizontalAlignment="Left" VerticalAlignment="Stretch"/>
- </StackPanel>
- <Grid Margin="5" Grid.Column="1" DataContext="{Binding LocationViewModel}">
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="Auto"/>
- </Grid.RowDefinitions>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="80"/>
- <ColumnDefinition Width="Auto"/>
- <ColumnDefinition Width="80"/>
- <ColumnDefinition Width="Auto"/>
- </Grid.ColumnDefinitions>
- <TextBlock Grid.Column="0" Margin="10 10 0 0" Text="{extensions:Translater Continent}" VerticalAlignment="Center"/>
- <ComboBox Grid.Row="0" Margin="10 10 0 0" Grid.Column="1" ItemsSource="{Binding ContinentCollection}"
- DisplayMemberPath="Description"
- Text="{Binding SelectContinentText}"
- SelectedItem="{Binding SelectContinentViewModel}"
- Width="150" VerticalAlignment="Center"/>
- <TextBlock Grid.Row="0" Grid.Column="2" Margin="10 10 0 0" Text="{extensions:Translater Country}" VerticalAlignment="Center"/>
- <ComboBox Grid.Row="0" Margin="10 10 0 0" Grid.Column="3" ItemsSource="{Binding CountryRegionCollection}"
- DisplayMemberPath="Description"
- Text="{Binding SelectCountryText}"
- SelectedItem="{Binding SelectCountryRegionViewModel}"
- Width="150" VerticalAlignment="Center"/>
- <TextBlock Grid.Row="1" Margin="10 10 0 0" Grid.Column="0" Text="{extensions:Translater State}" VerticalAlignment="Center"/>
- <ComboBox Grid.Row="1" Margin="10 10 0 0" Grid.Column="1" ItemsSource="{Binding StateCollection}"
- DisplayMemberPath="Description"
- Text="{Binding SelectStateText}"
- SelectedItem="{Binding SelectStateViewModel}"
- Width="150" VerticalAlignment="Center"/>
- <TextBlock Grid.Row="1" Margin="10 10 0 0" Grid.Column="2" Text="{extensions:Translater City}" VerticalAlignment="Center"/>
- <ComboBox Grid.Row="1" Margin="10 10 0 0" Grid.Column="3" ItemsSource="{Binding CityCollection}"
- DisplayMemberPath="Description"
- Text="{Binding SelectCityText}"
- SelectedItem="{Binding SelectCityViewModel}"
- Width="150" VerticalAlignment="Center"/>
- <CheckBox Grid.Row="2" Grid.Column="0" Margin="10 10 0 0" Grid.ColumnSpan="2" IsChecked="{Binding IsInputIP}" Content="{extensions:Translater IsInputIP}"></CheckBox>
- <Grid Grid.Row="3" Margin="10 10 0 0" Grid.Column="0" Grid.ColumnSpan="4" >
- <Grid.RowDefinitions>
- <RowDefinition Height="*"/>
- <RowDefinition Height="50"/>
- </Grid.RowDefinitions>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="80"/>
- <ColumnDefinition Width="*"/>
- <ColumnDefinition Width="80"/>
- <ColumnDefinition Width="*"/>
- </Grid.ColumnDefinitions>
- <TextBlock Grid.Row="0" Grid.Column="0" HorizontalAlignment="Left" Text="{extensions:Translater StartIp}" VerticalAlignment="Center"/>
- <TextBox Grid.Row="0" Grid.Column="1" Height="25" VerticalContentAlignment="Center" Width="150" Text="{Binding StartIp}" VerticalAlignment="Center"/>
- <TextBlock Grid.Row="0" Grid.Column="2" HorizontalAlignment="Left" Margin="5 0 0 0" Text="{extensions:Translater EndIp}" VerticalAlignment="Center"/>
- <TextBox Grid.Row="0" Grid.Column="3" Height="25" VerticalContentAlignment="Center" Width="150" Text="{Binding EndIp}" VerticalAlignment="Center"/>
- <TextBlock Grid.Row="1" Grid.Column="0" HorizontalAlignment="Left" Text="{extensions:Translater Remarks}" VerticalAlignment="Center"/>
- <TextBox Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" Height="25" HorizontalContentAlignment="Left" VerticalContentAlignment="Stretch" Text="{Binding Remarks}" VerticalAlignment="Center"/>
- </Grid>
- </Grid>
- <StackPanel Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center">
- <Button Height="30" Width="100" Margin="0 5" Content="{extensions:Translater Add}" Style="{StaticResource ButtonStyle}" Command="{Binding AddCommand}"></Button>
- <Button Height="30" Width="100" Margin="0 5" Content="{extensions:Translater Delete}" Style="{StaticResource ButtonStyle}" Command="{Binding DeleteCommand}"></Button>
- <Button Height="30" Width="100" Margin="0 5" Content="{extensions:Translater Update}" Style="{StaticResource ButtonStyle}" Command="{Binding UpdateCommand}"></Button>
- <Button Height="30" Width="100" Margin="0 5" Content="{extensions:Translater Reset}" Style="{StaticResource ButtonStyle}" Command="{Binding ResetEditLocationCommand}"></Button>
- </StackPanel>
- </Grid>
- <ListView Grid.Row="2" ItemsSource="{Binding Source={StaticResource LocationSource}}" SelectedItem ="{Binding SelectedLocationInfoViewModel,Mode=TwoWay}">
- <ListBox.GroupStyle>
- <GroupStyle>
- <GroupStyle.ContainerStyle>
- <Style TargetType="{x:Type GroupItem}">
- <Setter Property="Margin" Value="0,0,0,5"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type GroupItem}">
- <Expander IsExpanded="True" BorderThickness="2" >
- <Expander.Header>
- <Grid>
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="Auto"/>
- </Grid.RowDefinitions>
- <StackPanel Grid.Row="0" Orientation="Horizontal" Margin="0,0,10,0">
- <TextBlock FontWeight="Bold" Text="{Binding Path=Name}" Margin="5,0,0,0" Width="auto"/>
- </StackPanel>
- <Line Grid.Row="1" SnapsToDevicePixels="true" Stretch="Fill" StrokeThickness="2"/>
- </Grid>
- </Expander.Header>
- <Expander.Content>
- <ItemsPresenter/>
- </Expander.Content>
- </Expander>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- </GroupStyle.ContainerStyle>
- </GroupStyle>
- </ListBox.GroupStyle>
- <ListView.View>
- <GridView >
- <GridViewColumn Header="{extensions:Translater ServerAddress}" DisplayMemberBinding="{Binding ServerAddress}" Width="200"/>
- <GridViewColumn Header="{extensions:Translater Continent}" DisplayMemberBinding="{Binding Continent.Description}" Width="100"/>
- <GridViewColumn Header="{extensions:Translater Country}" DisplayMemberBinding="{Binding Country.Description}" Width="100"/>
- <GridViewColumn Header="{extensions:Translater State}" DisplayMemberBinding="{Binding State.Description}" Width="100"/>
- <GridViewColumn Header="{extensions:Translater City}" DisplayMemberBinding="{Binding City.Description}" Width="100"/>
- <GridViewColumn Header="{extensions:Translater IPBlocks}" DisplayMemberBinding="{Binding IpBlock}" Width="200"/>
- <GridViewColumn Header="{extensions:Translater Remarks}" DisplayMemberBinding="{Binding Remarks}" Width="200"/>
- </GridView>
- </ListView.View>
- </ListView>
- <view:LogView Grid.Row="3" DataContext="{Binding LogViewModel}">
- </view:LogView>
- <view:BusyIndicator Grid.Row="0" Grid.RowSpan="3" x:Name="busyControl"
- Visibility="{Binding IsBusy, Converter={extensions:BoolToVisibilityConverter}}"/>
- </Grid>
- </Window>
|