OverviewFilesCommitsIssuesDocsReleasesPeers

ifsrenderer-linux / WpfDisplay / Views / ValueSlider.xaml

94 lines · xaml ref:
<UserControl x:Class="WpfDisplay.Views.ValueSlider"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:sys="clr-namespace:System;assembly=mscorlib"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             mc:Ignorable="d"
             d:DesignWidth="150"
             x:Name="valueSlider">
    <UserControl.ContextMenu>
        <ContextMenu xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes">
            <MenuItem Header="Reset" Icon="🔄" Command="{Binding Path=PlacementTarget.ResetValueCommand, RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
            <MenuItem Header="Animate" Icon="🎬" 
                      Command="{Binding Path=PlacementTarget.InternalAnimateCommand, RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
            <Separator/>
            <MenuItem Visibility="{Binding Path=PlacementTarget.ToolTip, RelativeSource={RelativeSource AncestorType=ContextMenu}, Converter={StaticResource nullVisibilityConverter}}"
                      Height="auto" md:RippleAssist.IsDisabled="True" IsHitTestVisible="False">
                <MenuItem.Header>
                    <StackPanel>
                        <Label Margin="-10 0" Content="{Binding Path=PlacementTarget.Label, RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
                        <ContentPresenter MaxWidth="300" Content="{Binding Path=PlacementTarget.ToolTip, RelativeSource={RelativeSource AncestorType=ContextMenu}}">
                            <ContentPresenter.Resources>
                                <DataTemplate DataType="{x:Type sys:String}">
                                    <TextBlock Text="{Binding}" MaxWidth="300" FontFamily="Times New Roman"
                                               TextWrapping="Wrap" TextAlignment="Justify" Margin="8"/>
                                </DataTemplate>
                            </ContentPresenter.Resources>
                        </ContentPresenter> 
                    </StackPanel>
                </MenuItem.Header>
            </MenuItem>
            <MenuItem Visibility="{Binding Path=PlacementTarget.AnimationPath, RelativeSource={RelativeSource AncestorType=ContextMenu}, Converter={StaticResource nullVisibilityConverter}}"
                      Height="auto" md:RippleAssist.IsDisabled="True">
                <MenuItem.Header>
                    <TextBox Text="{Binding Path=PlacementTarget.AnimationPath, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
                             IsReadOnly="True" FontFamily="Consolas"
                             md:HintAssist.Hint="Channel path" Style="{StaticResource MaterialDesignFloatingHintTextBox}" md:TextFieldAssist.DecorationVisibility="Hidden"/>
                </MenuItem.Header>
            </MenuItem>
        </ContextMenu>
    </UserControl.ContextMenu>
    <StackPanel>
        <Grid Visibility="{Binding IsLabelShown, ElementName=valueSlider, Converter={StaticResource betterBooleanToVisibilityConverter}}" d:Visibility="Visible">
            <Label IsTabStop="False" VerticalContentAlignment="Center"
                   Content="{Binding Label, ElementName=valueSlider}" d:Content="Label"/>
            <Button x:Name="symbolButton1" HorizontalAlignment="Right" d:Content="*"
                IsTabStop="False" Padding="8" ToolTip="Animation keyframe"
                Visibility="{Binding AnimationPath, ElementName=valueSlider, Converter={StaticResource nullVisibilityConverter}}" d:Visibility="Visible"
                Style="{StaticResource MaterialDesignToolButton }" Foreground="Gray"
                Command="{Binding InternalAnimateCommand, ElementName=valueSlider}"/>
        </Grid>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="auto"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="auto"/>
                <ColumnDefinition Width="auto"/>
            </Grid.ColumnDefinitions>
            <Button 
                Grid.Column="0" 
                Padding="10,0,10,0" IsTabStop="False"
                Style="{StaticResource MaterialDesignFlatButton }"
                Background="#303030"
                Click="Down_Click">-</Button>
            <Label x:Name="displayLabel" Grid.Column="1"
                   Content="{Binding Value, ElementName=valueSlider}"
                   Visibility="{Binding Editing, ElementName=valueSlider, Converter={StaticResource invertBooleanToVisibilityConverter}}"
                   Background="#303030" Cursor="SizeWE"
                   IsTabStop="True" Focusable="True" GotKeyboardFocus="valueSlider_GotKeyboardFocus"
                   HorizontalContentAlignment="Center" VerticalContentAlignment="Center" 
                   PreviewMouseMove="DisplayLabel_MouseMove" PreviewMouseUp="DisplayLabel_MouseUp"/>
            <TextBox x:Name="valueEditor" Grid.Column="1" 
                     Text="{Binding Value, ElementName=valueSlider, StringFormat={}{0:0.####}}" d:Text="0.5000"
                     Visibility="{Binding Editing, ElementName=valueSlider, Converter={StaticResource betterBooleanToVisibilityConverter}}" 
                     HorizontalContentAlignment="Center" VerticalContentAlignment="Center" 
                     MouseDoubleClick="valueEditor_MouseDoubleClick"
                     PreviewKeyDown="ValueEditor_KeyDown" LostFocus="ValueEditor_LostFocus" LostKeyboardFocus="valueEditor_LostKeyboardFocus"/>
            <Button
                Grid.Column="2" 
                Padding="10,0,10,0" IsTabStop="False"
                Style="{StaticResource MaterialDesignFlatButton }"
                Background="#303030"
                Click="Up_Click">+</Button>
            <Grid Grid.Column="3" Visibility="{Binding IsLabelShown, ElementName=valueSlider, Converter={StaticResource invertBooleanToVisibilityConverter}}">
                <Button x:Name="symbolButton2"
                    IsTabStop="False" Padding="8" ToolTip="Animation keyframe" d:Content="*"
                    Visibility="{Binding AnimationPath, ElementName=valueSlider, Converter={StaticResource nullVisibilityConverter}}" d:Visibility="Visible"
                    Style="{StaticResource MaterialDesignToolButton }" Foreground="Gray"
                    Command="{Binding InternalAnimateCommand, ElementName=valueSlider}"/>
            </Grid>
        </Grid>
    </StackPanel>
</UserControl>