Рисование поверх другого элемента управления

Один метод использует union all и агрегацию:

select type1, col1,
       max(request1) as request1, max(due1) as due1,
       max(request2) as request2, max(due2) as due2,
       max(request3) as request3, max(due3) as due3
from ((select type1, col1,
              request as request1, due as due1,
              0 as request2, 0 as due2,
              0 as request3, 0 as due3
       from #tmpa
      ) union all
      (select type1, col1,
              0 as request1, 0 as due1,
              request as request2, due as due2,
              0 as request3, 0 as due3
       from #tmpb
      ) union all
      (select type1, col1,
              0 as request1, 0 as due1,
              0 as request2, 0 as due2,
              request as request3, due as due3
       from #tmpc
      )
     ) abc
group by type1, col1;

Другой подход - full join, но это может быть сложно:

select a.type1, a.col1,
       coalesce(a.request, 0) as request1, coalesce(a.due, 0) as due1,
       coalesce(b.request, 0) as request2, coalesce(b.due, 0) as due2,
       coalesce(c.request, 0) as request3, coalesce(c.due, 0) as due3
from #tmpA a full join
     #tmpB b
     on b.type1 = a.type1 and b.col1 = a.col1 full join
     #tmpC c
     on c.type1 = coalesce(a.type1, b.type1) and
        c.col1 = coalesce(a.col1, b.col1);
-1
задан Icemanind 20 January 2019 в 01:24
поделиться

1 ответ

Вы можете определить пользовательский ControlTemplate и переопределить метод OnRender внутреннего ScrollViewer элемента RichTextBox:

public class MyScrollViewer : ScrollViewer
{
    protected override void OnRender(DrawingContext drawingContext)
    {
        base.OnRender(drawingContext);

        drawingContext.DrawLine(new Pen(Brushes.LimeGreen, 11.0),
                new Point(1, 1), new Point(115, 115));
    }
}

XAML: [117 ]

<RichTextBox>
    <RichTextBox.Resources>
        <SolidColorBrush x:Key="TextBox.Static.Border" Color="#FFABAdB3"/>
        <SolidColorBrush x:Key="TextBox.MouseOver.Border" Color="#FF7EB4EA"/>
        <SolidColorBrush x:Key="TextBox.Focus.Border" Color="#FF569DE5"/>
    </RichTextBox.Resources>
    <RichTextBox.Template>
        <ControlTemplate TargetType="{x:Type TextBoxBase}">
            <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
                <local:MyScrollViewer x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
            </Border>
            <ControlTemplate.Triggers>
                <Trigger Property="IsEnabled" Value="false">
                    <Setter Property="Opacity" TargetName="border" Value="0.56"/>
                </Trigger>
                <Trigger Property="IsMouseOver" Value="true">
                    <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource TextBox.MouseOver.Border}"/>
                </Trigger>
                <Trigger Property="IsKeyboardFocused" Value="true">
                    <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource TextBox.Focus.Border}"/>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </RichTextBox.Template>
</RichTextBox>
0
ответ дан mm8 20 January 2019 в 01:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: