|
@@ -0,0 +1,333 @@
|
|
|
+<UserControl x:Class="CollaborativePlatformMain.Form.UserControlForm.NativeCombox"
|
|
|
+ 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:local="clr-namespace:CollaborativePlatformMain.Form.UserControlForm"
|
|
|
+ mc:Ignorable="d"
|
|
|
+ d:DesignHeight="30" d:DesignWidth="200">
|
|
|
+ <UserControl.Resources>
|
|
|
+ <LinearGradientBrush x:Key="NormalBrush" StartPoint="0,0" EndPoint="0,1">
|
|
|
+ <GradientBrush.GradientStops>
|
|
|
+ <GradientStopCollection>
|
|
|
+ <GradientStop Color="White" Offset="0.0"/>
|
|
|
+ <GradientStop Color="White" Offset="1.0"/>
|
|
|
+ </GradientStopCollection>
|
|
|
+ </GradientBrush.GradientStops>
|
|
|
+ </LinearGradientBrush>
|
|
|
+
|
|
|
+ <LinearGradientBrush x:Key="NormalBorderBrush" StartPoint="0,0" EndPoint="0,1">
|
|
|
+ <GradientBrush.GradientStops>
|
|
|
+ <GradientStopCollection>
|
|
|
+ <GradientStop Color="White" Offset="0.0"/>
|
|
|
+ <GradientStop Color="White" Offset="1.0"/>
|
|
|
+ </GradientStopCollection>
|
|
|
+ </GradientBrush.GradientStops>
|
|
|
+ </LinearGradientBrush>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="GlyphBrush" Color="#444" />
|
|
|
+
|
|
|
+ <LinearGradientBrush x:Key="DarkBrush" StartPoint="0,0" EndPoint="0,1">
|
|
|
+ <GradientBrush.GradientStops>
|
|
|
+ <GradientStopCollection>
|
|
|
+ <GradientStop Color="White" Offset="0.0"/>
|
|
|
+ <GradientStop Color="White" Offset="1.0"/>
|
|
|
+ </GradientStopCollection>
|
|
|
+ </GradientBrush.GradientStops>
|
|
|
+ </LinearGradientBrush>
|
|
|
+
|
|
|
+ <LinearGradientBrush x:Key="PressedBrush" StartPoint="0,0" EndPoint="0,1">
|
|
|
+ <GradientBrush.GradientStops>
|
|
|
+ <GradientStopCollection>
|
|
|
+ <GradientStop Color="White" Offset="0.0"/>
|
|
|
+ <GradientStop Color="White" Offset="0.1"/>
|
|
|
+ <GradientStop Color="White" Offset="0.9"/>
|
|
|
+ <GradientStop Color="White" Offset="1.0"/>
|
|
|
+ </GradientStopCollection>
|
|
|
+ </GradientBrush.GradientStops>
|
|
|
+ </LinearGradientBrush>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="DisabledForegroundBrush" Color="White" />
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="DisabledBackgroundBrush" Color="White" />
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="WindowBackgroundBrush" Color="White" />
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="SelectedBackgroundBrush" Color="White" />
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Static.Border" Color="White"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Static.Editable.Background" Color="White"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Static.Editable.Border" Color="White"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Static.Editable.Button.Background" Color="Transparent"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Static.Editable.Button.Border" Color="Transparent"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.MouseOver.Glyph" Color="White"/>
|
|
|
+
|
|
|
+ <LinearGradientBrush x:Key="ComboBox.MouseOver.Background" EndPoint="0,1" StartPoint="0,0">
|
|
|
+ <GradientStop Color="White" Offset="0.0"/>
|
|
|
+ <GradientStop Color="White" Offset="1.0"/>
|
|
|
+ </LinearGradientBrush>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.MouseOver.Border" Color="#FF7EB4EA"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.MouseOver.Editable.Background" Color="White"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.MouseOver.Editable.Border" Color="White"/>
|
|
|
+
|
|
|
+ <LinearGradientBrush x:Key="ComboBox.MouseOver.Editable.Button.Background" EndPoint="0,1" StartPoint="0,0">
|
|
|
+ <GradientStop Color="White" Offset="0.0"/>
|
|
|
+ <GradientStop Color="White" Offset="1.0"/>
|
|
|
+ </LinearGradientBrush>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.MouseOver.Editable.Button.Border" Color="White"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Pressed.Glyph" Color="White"/>
|
|
|
+
|
|
|
+ <LinearGradientBrush x:Key="ComboBox.Pressed.Background" EndPoint="0,1" StartPoint="0,0">
|
|
|
+ <GradientStop Color="White" Offset="0.0"/>
|
|
|
+ <GradientStop Color="White" Offset="1.0"/>
|
|
|
+ </LinearGradientBrush>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Pressed.Border" Color="White"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Pressed.Editable.Background" Color="White"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Pressed.Editable.Border" Color="White"/>
|
|
|
+
|
|
|
+ <LinearGradientBrush x:Key="ComboBox.Pressed.Editable.Button.Background" EndPoint="0,1" StartPoint="0,0">
|
|
|
+ <GradientStop Color="White" Offset="0.0"/>
|
|
|
+ <GradientStop Color="White" Offset="1.0"/>
|
|
|
+ </LinearGradientBrush>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Pressed.Editable.Button.Border" Color="White"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Disabled.Glyph" Color="White"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Disabled.Background" Color="White"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Disabled.Border" Color="White"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Background" Color="White"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Border" Color="White"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Button.Background" Color="Transparent"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Disabled.Editable.Button.Border" Color="Transparent"/>
|
|
|
+
|
|
|
+ <SolidColorBrush x:Key="ComboBox.Static.Glyph" Color="Black"/>
|
|
|
+
|
|
|
+ <ControlTemplate x:Key="ComboBoxTextBox" TargetType="TextBox">
|
|
|
+ <Border x:Name="PART_ContentHost" Focusable="False" Background="{TemplateBinding Background}" />
|
|
|
+ </ControlTemplate>
|
|
|
+ <Style x:Key="ComboBoxToggleButton" TargetType="ToggleButton">
|
|
|
+ <Setter Property="OverridesDefaultStyle" Value="true"/>
|
|
|
+ <Setter Property="IsTabStop" Value="false"/>
|
|
|
+ <Setter Property="Focusable" Value="false"/>
|
|
|
+ <Setter Property="ClickMode" Value="Press"/>
|
|
|
+ <Setter Property="Template">
|
|
|
+ <Setter.Value>
|
|
|
+ <ControlTemplate TargetType="{x:Type ToggleButton}">
|
|
|
+ <Border x:Name="templateRoot" SnapsToDevicePixels="true" Background="White">
|
|
|
+ <Border x:Name="splitBorder" HorizontalAlignment="Right" Margin="0,0,2,0" SnapsToDevicePixels="true" Width="25" BorderBrush="White" BorderThickness="1,0,0,0">
|
|
|
+ <Path x:Name="arrow" Data="F1 M 0,0 L 3.667,2.66665 L 7.3334,0 L 7.3334,-1.78168 L 3.6667,0.88501 L0,-1.78168 L0,0 Z" Fill="{StaticResource ComboBox.Static.Glyph}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
|
|
+ </Border>
|
|
|
+ </Border>
|
|
|
+ <ControlTemplate.Triggers>
|
|
|
+ <MultiDataTrigger>
|
|
|
+ <MultiDataTrigger.Conditions>
|
|
|
+ <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/>
|
|
|
+ <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="false"/>
|
|
|
+ <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="false"/>
|
|
|
+ <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="true"/>
|
|
|
+ </MultiDataTrigger.Conditions>
|
|
|
+ <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Static.Editable.Background}"/>
|
|
|
+
|
|
|
+ <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.Static.Editable.Button.Background}"/>
|
|
|
+
|
|
|
+ </MultiDataTrigger>
|
|
|
+ <Trigger Property="IsMouseOver" Value="true">
|
|
|
+ <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ComboBox.MouseOver.Glyph}"/>
|
|
|
+ </Trigger>
|
|
|
+ <MultiDataTrigger>
|
|
|
+ <MultiDataTrigger.Conditions>
|
|
|
+ <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
|
|
|
+ <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false"/>
|
|
|
+ </MultiDataTrigger.Conditions>
|
|
|
+ <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.MouseOver.Background}"/>
|
|
|
+
|
|
|
+ </MultiDataTrigger>
|
|
|
+ <MultiDataTrigger>
|
|
|
+ <MultiDataTrigger.Conditions>
|
|
|
+ <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
|
|
|
+ <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/>
|
|
|
+ </MultiDataTrigger.Conditions>
|
|
|
+ <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.MouseOver.Editable.Background}"/>
|
|
|
+
|
|
|
+ <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.MouseOver.Editable.Button.Background}"/>
|
|
|
+
|
|
|
+ </MultiDataTrigger>
|
|
|
+ <Trigger Property="IsPressed" Value="true">
|
|
|
+ <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ComboBox.Pressed.Glyph}"/>
|
|
|
+ </Trigger>
|
|
|
+ <MultiDataTrigger>
|
|
|
+ <MultiDataTrigger.Conditions>
|
|
|
+ <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="true"/>
|
|
|
+ <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false"/>
|
|
|
+ </MultiDataTrigger.Conditions>
|
|
|
+ <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Pressed.Background}"/>
|
|
|
+
|
|
|
+ </MultiDataTrigger>
|
|
|
+ <MultiDataTrigger>
|
|
|
+ <MultiDataTrigger.Conditions>
|
|
|
+ <Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="true"/>
|
|
|
+ <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/>
|
|
|
+ </MultiDataTrigger.Conditions>
|
|
|
+ <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Pressed.Editable.Background}"/>
|
|
|
+
|
|
|
+ <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.Pressed.Editable.Button.Background}"/>
|
|
|
+
|
|
|
+ </MultiDataTrigger>
|
|
|
+ <Trigger Property="IsEnabled" Value="false">
|
|
|
+ <Setter Property="Fill" TargetName="arrow" Value="{StaticResource ComboBox.Disabled.Glyph}"/>
|
|
|
+ </Trigger>
|
|
|
+ <MultiDataTrigger>
|
|
|
+ <MultiDataTrigger.Conditions>
|
|
|
+ <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
|
|
|
+ <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false"/>
|
|
|
+ </MultiDataTrigger.Conditions>
|
|
|
+ <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Disabled.Background}"/>
|
|
|
+
|
|
|
+ </MultiDataTrigger>
|
|
|
+ <MultiDataTrigger>
|
|
|
+ <MultiDataTrigger.Conditions>
|
|
|
+ <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
|
|
|
+ <Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="true"/>
|
|
|
+ </MultiDataTrigger.Conditions>
|
|
|
+ <Setter Property="Background" TargetName="templateRoot" Value="{StaticResource ComboBox.Disabled.Editable.Background}"/>
|
|
|
+
|
|
|
+ <Setter Property="Background" TargetName="splitBorder" Value="{StaticResource ComboBox.Disabled.Editable.Button.Background}"/>
|
|
|
+
|
|
|
+ </MultiDataTrigger>
|
|
|
+ </ControlTemplate.Triggers>
|
|
|
+ </ControlTemplate>
|
|
|
+ </Setter.Value>
|
|
|
+ </Setter>
|
|
|
+ </Style>
|
|
|
+ <Style x:Key="{x:Type ComboBoxItem}" TargetType="ComboBoxItem">
|
|
|
+ <Setter Property="SnapsToDevicePixels" Value="true"/>
|
|
|
+ <Setter Property="OverridesDefaultStyle" Value="true"/>
|
|
|
+ <Setter Property="Template">
|
|
|
+ <Setter.Value>
|
|
|
+ <ControlTemplate TargetType="ComboBoxItem">
|
|
|
+ <Border
|
|
|
+ Name="Border"
|
|
|
+ Padding="2"
|
|
|
+ SnapsToDevicePixels="true">
|
|
|
+ <ContentPresenter />
|
|
|
+ </Border>
|
|
|
+ <ControlTemplate.Triggers>
|
|
|
+ <Trigger Property="IsHighlighted" Value="true">
|
|
|
+ <Setter TargetName="Border" Property="Background" Value="{StaticResource SelectedBackgroundBrush}"/>
|
|
|
+ </Trigger>
|
|
|
+ <Trigger Property="IsEnabled" Value="false">
|
|
|
+ <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
|
|
|
+ </Trigger>
|
|
|
+
|
|
|
+ </ControlTemplate.Triggers>
|
|
|
+ </ControlTemplate>
|
|
|
+ </Setter.Value>
|
|
|
+ </Setter>
|
|
|
+ </Style>
|
|
|
+ </UserControl.Resources>
|
|
|
+ <Grid Background="#aaa">
|
|
|
+ <Border Margin="1,1,1,1" BorderBrush="Black" CornerRadius="4,4,4,4">
|
|
|
+ <ComboBox x:Name="CheckableCombo">
|
|
|
+ <ComboBox.ItemTemplate>
|
|
|
+ <HierarchicalDataTemplate>
|
|
|
+ <CheckBox Content="{Binding Name}" Height="30"
|
|
|
+ IsChecked="{Binding IsSelect, Mode=TwoWay}"
|
|
|
+ Tag="{RelativeSource FindAncestor, AncestorType={x:Type ComboBox}}"
|
|
|
+ Click="CheckBox_Click" VerticalContentAlignment="Center" HorizontalAlignment="Left"></CheckBox>
|
|
|
+ </HierarchicalDataTemplate>
|
|
|
+ </ComboBox.ItemTemplate>
|
|
|
+ <ComboBox.Template>
|
|
|
+ <ControlTemplate TargetType="ComboBox">
|
|
|
+ <Grid>
|
|
|
+ <ToggleButton Name="ToggleButton"
|
|
|
+ Style="{StaticResource ComboBoxToggleButton}"
|
|
|
+ Focusable="False" Click="ToggleButton_Click"
|
|
|
+ IsChecked="{Binding Path=IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
|
|
|
+ </ToggleButton>
|
|
|
+ <ContentPresenter x:Name="Presenter"
|
|
|
+ IsHitTestVisible="False"
|
|
|
+ Margin="3, 3, 23, 3"
|
|
|
+ VerticalAlignment="Center"
|
|
|
+ HorizontalAlignment="Left">
|
|
|
+ <ContentPresenter.Content>
|
|
|
+ <TextBlock TextTrimming="CharacterEllipsis"
|
|
|
+ Text="{Binding Path=Text, Mode=TwoWay, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}">
|
|
|
+ </TextBlock>
|
|
|
+ </ContentPresenter.Content>
|
|
|
+ </ContentPresenter>
|
|
|
+ <TextBox x:Name="EditableTextBox"
|
|
|
+ Style="{x:Null}"
|
|
|
+ Template="{StaticResource ComboBoxTextBox}"
|
|
|
+ HorizontalAlignment="Left"
|
|
|
+ VerticalAlignment="Center"
|
|
|
+ Margin="3,3,23,3"
|
|
|
+ Focusable="True"
|
|
|
+ Background="Transparent"
|
|
|
+ Visibility="Hidden"
|
|
|
+ IsReadOnly="{TemplateBinding IsReadOnly}"/>
|
|
|
+ <Popup
|
|
|
+ Name="Popup"
|
|
|
+ Placement="Bottom"
|
|
|
+ IsOpen="{TemplateBinding IsDropDownOpen}"
|
|
|
+ AllowsTransparency="True"
|
|
|
+ Focusable="False"
|
|
|
+ PopupAnimation="Slide">
|
|
|
+ <Grid
|
|
|
+ Name="DropDown"
|
|
|
+ SnapsToDevicePixels="True"
|
|
|
+ MinWidth="{TemplateBinding ActualWidth}"
|
|
|
+ MaxHeight="{TemplateBinding MaxDropDownHeight}">
|
|
|
+ <Border
|
|
|
+ x:Name="DropDownBorder"
|
|
|
+ Background="{StaticResource WindowBackgroundBrush}" BorderThickness="1,1,1,1" BorderBrush="White"/>
|
|
|
+ <ScrollViewer Margin="4,6,4,6" SnapsToDevicePixels="True" DataContext="{Binding}">
|
|
|
+ <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" />
|
|
|
+ </ScrollViewer>
|
|
|
+ </Grid>
|
|
|
+ </Popup>
|
|
|
+ </Grid>
|
|
|
+ <ControlTemplate.Triggers>
|
|
|
+ <Trigger Property="HasItems" Value="false">
|
|
|
+ <Setter TargetName="DropDownBorder" Property="MinHeight" Value="95"/>
|
|
|
+ </Trigger>
|
|
|
+ <Trigger Property="IsEnabled" Value="false">
|
|
|
+ <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
|
|
|
+ </Trigger>
|
|
|
+ <Trigger Property="IsGrouping" Value="true">
|
|
|
+ <Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
|
|
|
+ </Trigger>
|
|
|
+ <Trigger SourceName="Popup" Property="Popup.AllowsTransparency" Value="true">
|
|
|
+ <Setter TargetName="DropDownBorder" Property="CornerRadius" Value="4"/>
|
|
|
+ <Setter TargetName="DropDownBorder" Property="Margin" Value="0,2,0,0"/>
|
|
|
+ </Trigger>
|
|
|
+ <Trigger Property="IsEditable" Value="true">
|
|
|
+ <Setter Property="IsTabStop" Value="false"/>
|
|
|
+ <Setter TargetName="EditableTextBox" Property="Visibility" Value="Visible"/>
|
|
|
+ <Setter TargetName="Presenter" Property="Visibility" Value="Hidden"/>
|
|
|
+ </Trigger>
|
|
|
+ </ControlTemplate.Triggers>
|
|
|
+ </ControlTemplate>
|
|
|
+ </ComboBox.Template>
|
|
|
+ </ComboBox>
|
|
|
+ </Border>
|
|
|
+ </Grid>
|
|
|
+</UserControl>
|