| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | <Window x:Class="InABox.DynamicGrid.ExpressionEditorWindow"        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:InABox.DynamicGrid"        xmlns:system="clr-namespace:System;assembly=System.Runtime"        mc:Ignorable="d"        Title="Expression Editor" Height="650" Width="800"        Loaded="ExpressionWindow_Loaded"        x:Name="ExpressionWindow">    <Window.Resources>        <Style x:Key="tooltipDescriptionStyle" TargetType="TextBlock">            <Style.Triggers>                <DataTrigger Binding="{Binding Path=Description}" Value="">                    <Setter Property="Visibility" Value="Collapsed" />                </DataTrigger>            </Style.Triggers>        </Style>    </Window.Resources>    <Grid Margin="5">        <Grid.ColumnDefinitions>            <ColumnDefinition Width="*"/>            <ColumnDefinition Width="250"/>        </Grid.ColumnDefinitions>        <Grid.RowDefinitions>            <RowDefinition Height="*"/>            <RowDefinition Height="Auto"/>        </Grid.RowDefinitions>        <TextBox x:Name="Editor"                 Grid.Column="0" Grid.Row="0" Grid.RowSpan="2"                 Background="LightYellow"                 BorderThickness="1,1,0,1"                 Padding="5"                 FontFamily="Consolas" FontSize="12"                 TextWrapping="Wrap"                 PreviewLostKeyboardFocus="Editor_PreviewLostKeyboardFocus"                 PreviewTextInput="Editor_PreviewTextInput"                 KeyDown="Editor_KeyDown"/>        <Border Grid.Column="1" Grid.Row="0"                BorderBrush="DarkGray" BorderThickness="1,0,0,0">            <ScrollViewer VerticalScrollBarVisibility="Auto">                <StackPanel>                    <Border BorderThickness="0,0,0,1" BorderBrush="LightGray"                            Padding="5">                        <Expander Header="Functions">                            <ItemsControl ItemsSource="{x:Static local:ExpressionEditorWindow.FunctionTemplates}">                                <ItemsControl.ItemTemplate>                                    <DataTemplate>                                        <Border BorderThickness="1,0,0,1" BorderBrush="WhiteSmoke"                                                Padding="5">                                            <Expander Header="{Binding Item1}">                                                <ListBox ItemsSource="{Binding Item2}"                                                         HorizontalContentAlignment="Stretch"                                                         BorderThickness="0">                                                    <ListBox.Template>                                                        <ControlTemplate>                                                            <ItemsPresenter/>                                                        </ControlTemplate>                                                    </ListBox.Template>                                                    <ListBox.ItemTemplate>                                                        <DataTemplate DataType="local:FunctionTemplate">                                                            <ContentControl MouseDoubleClick="FunctionTemplate_Click"                                                                            Tag="{Binding}">                                                                <TextBlock Text="{Binding Template}"                                                                           FontFamily="Consolas" FontSize="12"                                                                           Padding="5">                                                                    <TextBlock.ToolTip>                                                                        <ToolTip Background="LightGray">                                                                            <StackPanel>                                                                                <TextBlock Text="{Binding Tooltip}"                                                                                           FontFamily="Consolas" FontSize="12"/>                                                                                <TextBlock Text="{Binding Description}" FontSize="12"                                                                                           Style="{StaticResource tooltipDescriptionStyle}"/>                                                                            </StackPanel>                                                                        </ToolTip>                                                                    </TextBlock.ToolTip>                                                                </TextBlock>                                                            </ContentControl>                                                        </DataTemplate>                                                    </ListBox.ItemTemplate>                                                </ListBox>                                            </Expander>                                        </Border>                                    </DataTemplate>                                </ItemsControl.ItemTemplate>                            </ItemsControl>                        </Expander>                    </Border>                    <Border BorderThickness="0,0,0,1" BorderBrush="LightGray"                            Margin="0,5,0,0"                            Padding="5">                        <Expander Header="Variables" IsExpanded="True">                            <ListBox ItemsSource="{Binding Path=Variables,ElementName=ExpressionWindow}"                                     HorizontalContentAlignment="Stretch"                                     BorderThickness="0">                                <ListBox.Template>                                    <ControlTemplate>                                        <ItemsPresenter/>                                    </ControlTemplate>                                </ListBox.Template>                                <ListBox.ItemTemplate>                                    <DataTemplate DataType="{x:Type system:String}">                                        <ContentControl MouseDoubleClick="Variable_Click"                                                        Tag="{Binding}">                                            <TextBlock Text="{Binding}"                                                       FontFamily="Consolas" FontSize="12"                                                       Padding="5"/>                                        </ContentControl>                                    </DataTemplate>                                </ListBox.ItemTemplate>                            </ListBox>                        </Expander>                    </Border>                </StackPanel>            </ScrollViewer>        </Border>        <Border Grid.Column="1" Grid.Row="1"                BorderBrush="DarkGray" BorderThickness="1,0,0,0">            <DockPanel LastChildFill="False">                <Button Content="OK"                        DockPanel.Dock="Right"                        Click="OK_Click"                        Padding="5" Width="50" Height="30"/>            </DockPanel>        </Border>    </Grid></Window>
 |