Как включить перетаскивание маркера прокрутки в ScrollViewer, содержащемся в шаблоне CalendarDayButton - PullRequest
0 голосов
/ 27 декабря 2018

В следующем примере полосы прокрутки ListBox в шаблоне элемента управления CalendarDayButton не будут прокручиваться при перетаскивании ручки прокрутки.Тем не менее, нажатие на полосу прокрутки работает нормально.Мое лучшее предположение - что-то в Calendar или CalendarDayButton делает что-то с событиями мыши вне моего понимания.

Можно ли восстановить поведение ScrollViewer для перетаскивания?

<Window 
x:Class="CustomCalendar.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
Title="MainWindow" 
Width="500"
Height="400"
>
<Window.Resources>
    <Style x:Key="CalendarDayButtonStyle1" TargetType="{x:Type CalendarDayButton}">
        <Setter Property="MinWidth" Value="120"/>
        <Setter Property="MinHeight" Value="120"/>
        <Setter Property="FontSize" Value="12"/>
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
        <Setter Property="VerticalContentAlignment" Value="Center"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type CalendarDayButton}">
                    <Grid>
                        <Grid MaxHeight="220">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="30"/>
                                <RowDefinition/>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <ContentPresenter HorizontalAlignment="Left" x:Name="NormalText" TextElement.FontSize="14" TextElement.Foreground="#FF333333" Margin="1,0,1,0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                            <ListBox Grid.Row="1" Grid.ColumnSpan="9" Margin="0,0,0,0">
                                <ListBoxItem Content="Coffie"></ListBoxItem>
                                <ListBoxItem Content="Tea"></ListBoxItem>
                                <ListBoxItem Content="Orange Juice"></ListBoxItem>
                                <ListBoxItem Content="Milk"></ListBoxItem>
                                <ListBoxItem Content="Iced Tea"></ListBoxItem>
                                <ListBoxItem Content="Mango Shake"></ListBoxItem>
                                <ListBoxItem Content="Coffie"></ListBoxItem>
                                <ListBoxItem Content="Tea"></ListBoxItem>
                                <ListBoxItem Content="Orange Juice"></ListBoxItem>
                                <ListBoxItem Content="Milk"></ListBoxItem>
                                <ListBoxItem Content="Iced Tea"></ListBoxItem>
                                <ListBoxItem Content="Mango Shake"></ListBoxItem>
                                <ListBoxItem Content="Coffie"></ListBoxItem>
                                <ListBoxItem Content="Tea"></ListBoxItem>
                                <ListBoxItem Content="Orange Juice"></ListBoxItem>
                                <ListBoxItem Content="Milk"></ListBoxItem>
                                <ListBoxItem Content="Iced Tea"></ListBoxItem>
                                <ListBoxItem Content="Mango Shake"></ListBoxItem>
                            </ListBox>
                        </Grid>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>
<Grid>
    <Calendar CalendarDayButtonStyle="{DynamicResource CalendarDayButtonStyle1}"/>
</Grid>

РЕДАКТИРОВАТЬ:

Похоже, что CalendarItem может быть виновником здесь.Когда он добавляет CalendarDayButton, он устанавливает некоторые обработчики событий, в частности MouseLeftButtonDownEvent.В этом обработчике он захватывает мышь, которая, кажется, берет захват от маркера прокрутки.Глядя на то, как преодолеть это, как мой следующий курс действий.

...