ExpressionEditorWindow.xaml 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <Window x:Class="InABox.DynamicGrid.ExpressionEditorWindow"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  5. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  6. xmlns:local="clr-namespace:InABox.DynamicGrid"
  7. mc:Ignorable="d"
  8. Title="Expression Editor" Height="650" Width="800"
  9. Loaded="ExpressionWindow_Loaded"
  10. x:Name="ExpressionWindow">
  11. <Window.Resources>
  12. <Style x:Key="tooltipDescriptionStyle" TargetType="TextBlock">
  13. <Style.Triggers>
  14. <DataTrigger Binding="{Binding Path=Description}" Value="">
  15. <Setter Property="Visibility" Value="Collapsed" />
  16. </DataTrigger>
  17. </Style.Triggers>
  18. </Style>
  19. </Window.Resources>
  20. <Grid Margin="5">
  21. <Grid.ColumnDefinitions>
  22. <ColumnDefinition Width="*"/>
  23. <ColumnDefinition Width="250"/>
  24. </Grid.ColumnDefinitions>
  25. <Grid.RowDefinitions>
  26. <RowDefinition Height="*"/>
  27. <RowDefinition Height="Auto"/>
  28. </Grid.RowDefinitions>
  29. <TextBox x:Name="Editor"
  30. Grid.Column="0" Grid.Row="0" Grid.RowSpan="2"
  31. Background="LightYellow"
  32. BorderThickness="1,1,0,1"
  33. Padding="5"
  34. FontFamily="Consolas" FontSize="12"
  35. TextWrapping="Wrap"
  36. PreviewLostKeyboardFocus="Editor_PreviewLostKeyboardFocus"
  37. PreviewTextInput="Editor_PreviewTextInput"
  38. KeyDown="Editor_KeyDown"/>
  39. <Border Grid.Column="1" Grid.Row="0"
  40. BorderBrush="DarkGray" BorderThickness="1,0,0,0">
  41. <ScrollViewer VerticalScrollBarVisibility="Auto">
  42. <StackPanel>
  43. <Border BorderThickness="0,0,0,1" BorderBrush="LightGray"
  44. Padding="5">
  45. <Expander Header="Functions">
  46. <ItemsControl ItemsSource="{x:Static local:ExpressionEditorWindow.FunctionTemplates}">
  47. <ItemsControl.ItemTemplate>
  48. <DataTemplate>
  49. <Border BorderThickness="1,0,0,1" BorderBrush="WhiteSmoke"
  50. Padding="5">
  51. <Expander Header="{Binding Item1}">
  52. <ListBox ItemsSource="{Binding Item2}"
  53. HorizontalContentAlignment="Stretch"
  54. BorderThickness="0">
  55. <ListBox.Template>
  56. <ControlTemplate>
  57. <ItemsPresenter/>
  58. </ControlTemplate>
  59. </ListBox.Template>
  60. <ListBox.ItemTemplate>
  61. <DataTemplate DataType="local:FunctionTemplate">
  62. <TextBlock Text="{Binding Template}"
  63. FontFamily="Consolas" FontSize="12"
  64. Padding="5"
  65. Tag="{Binding}"
  66. MouseLeftButtonUp="FunctionTemplate_Click">
  67. <TextBlock.ToolTip>
  68. <ToolTip Background="LightGray">
  69. <StackPanel>
  70. <TextBlock Text="{Binding Tooltip}"
  71. FontFamily="Consolas" FontSize="12"/>
  72. <TextBlock Text="{Binding Description}" FontSize="12"
  73. Style="{StaticResource tooltipDescriptionStyle}"/>
  74. </StackPanel>
  75. </ToolTip>
  76. </TextBlock.ToolTip>
  77. </TextBlock>
  78. </DataTemplate>
  79. </ListBox.ItemTemplate>
  80. </ListBox>
  81. </Expander>
  82. </Border>
  83. </DataTemplate>
  84. </ItemsControl.ItemTemplate>
  85. </ItemsControl>
  86. </Expander>
  87. </Border>
  88. <Border BorderThickness="0,0,0,1" BorderBrush="LightGray"
  89. Margin="0,5,0,0"
  90. Padding="5">
  91. <Expander Header="Variables" IsExpanded="True">
  92. <ListBox ItemsSource="{Binding Path=Variables,ElementName=ExpressionWindow}"
  93. HorizontalContentAlignment="Stretch"
  94. BorderThickness="0">
  95. <ListBox.Template>
  96. <ControlTemplate>
  97. <ItemsPresenter/>
  98. </ControlTemplate>
  99. </ListBox.Template>
  100. <ListBox.ItemTemplate>
  101. <DataTemplate DataType="local:string">
  102. <Label Content="{Binding}"
  103. FontFamily="Consolas" FontSize="12"
  104. Tag="{Binding}"
  105. MouseLeftButtonUp="Variable_Click"/>
  106. </DataTemplate>
  107. </ListBox.ItemTemplate>
  108. </ListBox>
  109. </Expander>
  110. </Border>
  111. </StackPanel>
  112. </ScrollViewer>
  113. </Border>
  114. <Border Grid.Column="1" Grid.Row="1"
  115. BorderBrush="DarkGray" BorderThickness="1,0,0,0">
  116. <DockPanel LastChildFill="False">
  117. <Button Content="OK"
  118. DockPanel.Dock="Right"
  119. Click="OK_Click"
  120. Padding="5" Width="50" Height="30"/>
  121. </DockPanel>
  122. </Border>
  123. </Grid>
  124. </Window>