В следующем примере полосы прокрутки 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.В этом обработчике он захватывает мышь, которая, кажется, берет захват от маркера прокрутки.Глядя на то, как преодолеть это, как мой следующий курс действий.