Multi-scene webcam (schema v3/v4): singleton Webcam + per-scene WebcamSceneConfig, right-click OBS-style border/context menu, persisted round-to-rect restore + legacy-square 16:9 heal, dark MenuItem template, tests (25 passing)
This commit is contained in:
+49
-5
@@ -373,7 +373,9 @@
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
CornerRadius="5" Padding="{TemplateBinding Padding}">
|
||||
<ItemsPresenter/>
|
||||
<Grid IsSharedSizeScope="True">
|
||||
<ItemsPresenter/>
|
||||
</Grid>
|
||||
</Border>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
@@ -387,18 +389,60 @@
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="MenuItem">
|
||||
<Border x:Name="Bd" Background="{TemplateBinding Background}" CornerRadius="3"
|
||||
Padding="{TemplateBinding Padding}" Margin="0,1">
|
||||
<ContentPresenter ContentSource="Header" VerticalAlignment="Center"
|
||||
<Grid x:Name="Grid" SnapsToDevicePixels="True">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition x:Name="Col0" MinWidth="17" Width="Auto"
|
||||
SharedSizeGroup="MenuItemIconColumnGroup"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="14"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Border x:Name="Bd" Grid.ColumnSpan="3"
|
||||
Background="{TemplateBinding Background}"
|
||||
CornerRadius="3" Margin="0,1"/>
|
||||
<TextBlock x:Name="CheckGlyph" Grid.Column="0" Text="✓"
|
||||
Margin="4,0,6,0" HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center" Visibility="Collapsed"/>
|
||||
<ContentPresenter x:Name="Content" Grid.Column="1"
|
||||
ContentSource="Header"
|
||||
Margin="{TemplateBinding Padding}"
|
||||
VerticalAlignment="Center"
|
||||
HorizontalAlignment="Left"/>
|
||||
</Border>
|
||||
<TextBlock x:Name="Arrow" Grid.Column="2" Text="›"
|
||||
Margin="6,0,0,0" HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center" Visibility="Collapsed"/>
|
||||
<Popup x:Name="PART_Popup" Placement="Right"
|
||||
HorizontalOffset="-1" VerticalOffset="-1"
|
||||
IsOpen="{TemplateBinding IsSubmenuOpen}"
|
||||
AllowsTransparency="True"
|
||||
PopupAnimation="{DynamicResource {x:Static SystemParameters.MenuPopupAnimationKey}}"
|
||||
Focusable="False">
|
||||
<Border Background="#16213e" BorderBrush="#2a3a5e"
|
||||
BorderThickness="1" CornerRadius="5" Padding="3">
|
||||
<Grid IsSharedSizeScope="True">
|
||||
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||
<ItemsPresenter/>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Popup>
|
||||
</Grid>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsHighlighted" Value="True">
|
||||
<Setter TargetName="Bd" Property="Background" Value="#26ffffff"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsSubmenuOpen" Value="True">
|
||||
<Setter TargetName="Bd" Property="Background" Value="#26ffffff"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsChecked" Value="True">
|
||||
<Setter TargetName="CheckGlyph" Property="Visibility" Value="Visible"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsEnabled" Value="False">
|
||||
<Setter Property="Opacity" Value="0.45"/>
|
||||
</Trigger>
|
||||
<DataTrigger Binding="{Binding HasItems, RelativeSource={RelativeSource TemplatedParent}}"
|
||||
Value="True">
|
||||
<Setter TargetName="Arrow" Property="Visibility" Value="Visible"/>
|
||||
</DataTrigger>
|
||||
</ControlTemplate.Triggers>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
|
||||
Reference in New Issue
Block a user