Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
b4527d5
fix(build): reference RMC.Numerics NuGet package instead of sibling c…
HadenSmith Apr 22, 2026
30b56b4
chore(ci): eliminate build warnings and fix baseline/DPI test failures
HadenSmith Apr 23, 2026
50c8b06
perf(oxyplot): 1.1 add IsHitTestEnabled property on Series base
HadenSmith Apr 24, 2026
f308282
perf(oxyplot): 1.5 suppress hover tracker during active mouse drag
HadenSmith Apr 24, 2026
bb67531
perf(oxyplot): 1.6 thread-safe indexed scan in GetNearestPointInternal
HadenSmith Apr 24, 2026
9b1ebed
perf(oxyplot): 1.7 cache FormattedText in DrawingVisualRenderContext.…
HadenSmith Apr 24, 2026
6dfea41
perf(oxyplot): gate Plot.InvalidatePlot on SuppressPropertyChanged
HadenSmith Apr 24, 2026
9980973
perf(oxyplot): per-phase timing diagnostic in Plot.InvalidatePlot
HadenSmith Apr 24, 2026
78989c5
chore(license): switch to Zero-Clause BSD (0BSD)
HadenSmith Apr 27, 2026
d028e91
fix(i18n): comprehensive culture handling for serialization, display,…
HadenSmith Apr 29, 2026
48768ea
perf(oxyplot): renderer speedups, diagnostics, and InvalidatePlot fixes
HadenSmith Apr 30, 2026
938d6f8
perf+fix(oxyplot): 17-phase remediation — undo-redo safety, cache bou…
HadenSmith May 1, 2026
992deae
fix(toolbar): guard polyline subsequent-click with IsDefined() like p…
HadenSmith May 1, 2026
b152212
fix(plot/debug): make _firstFrameHandlerPending an instance field
HadenSmith May 1, 2026
edde762
docs(oxyplot): clarify log-axis coupling and _pendingUpdateData threa…
HadenSmith May 1, 2026
716135f
perf(plot-view): dispatch deferred render at Render priority instead …
HadenSmith May 1, 2026
53468cb
perf(series): specialised FindWindowStartIndex(IList<DataPoint>) — no…
HadenSmith May 1, 2026
227fa4d
perf(line-series): add WindowEndIndex symmetric upper bound for fallb…
HadenSmith May 1, 2026
c9d7646
perf(render): reuse TranslateTransform / RotateTransform for rotated …
HadenSmith May 1, 2026
b15ac53
perf(render): eliminate per-render LINQ + RectangleGeometry allocations
HadenSmith May 1, 2026
517a38c
perf(plot-view): cache IsInVisualTree + DPI lookup across renders
HadenSmith May 1, 2026
232c9c1
perf(plot): per-collection sync dirty flags instead of single _needsS…
HadenSmith May 1, 2026
c81460f
perf(line-series): inline NaN/Infinity validity check on fallback pat…
HadenSmith May 1, 2026
4f701f3
perf(plot-model): skip redundant Axis.Measure when transform unchanged
HadenSmith May 1, 2026
635731a
perf(line-series): MaxSmoothingPoints opt-in threshold for spline int…
HadenSmith May 1, 2026
8e03cc2
perf: misc small wins — label window clip, FilterFunction flag, LogLi…
HadenSmith May 1, 2026
363f762
perf(plot-view): coalesce mouse-wheel events into one dispatcher tick
HadenSmith May 1, 2026
a5f306a
fix(render): revert cached rotation transforms — caused all rotated t…
HadenSmith May 1, 2026
4e4a109
chore(demo): replace 'Test X' / 'Test Y' axis-title placeholders with…
HadenSmith May 1, 2026
600b46d
perf(toolbar): drop redundant InvalidatePlot in polygon/polyline plac…
HadenSmith May 1, 2026
afccc1d
feat(toolbar): AnnotationDragAdorner with faithful per-shape rendering
HadenSmith May 1, 2026
3519e45
perf(toolbar): rectangle and ellipse placement use AnnotationDragAdorner
HadenSmith May 1, 2026
4a5e78c
perf(toolbar): arrow/text/point placement use AnnotationDragAdorner w…
HadenSmith May 1, 2026
5a38e65
perf(toolbar): line annotation placement (vertical/horizontal) uses A…
HadenSmith May 1, 2026
97e413f
perf(toolbar): annotation drag/resize uses AnnotationDragAdorner — no…
HadenSmith May 1, 2026
4dce611
Revert annotation drag adorner work (6 commits)
HadenSmith May 1, 2026
3ac337c
fix(software-update): parse SHA256 from release notes (F-002)
HadenSmith May 4, 2026
862354c
fix(framework-ui): save dirty state before update install (F-001)
HadenSmith May 4, 2026
de22071
fix(oxyplot): probability axes clamp ActualMin/Max correctly (D-003)
HadenSmith May 4, 2026
4d5a3a8
fix(oxyplot): log diagnostic when non-textual annotation is dropped (…
HadenSmith May 4, 2026
bc309fe
fix(updater): guard failure-path Console.ReadKey to avoid silent cras…
HadenSmith May 4, 2026
e272303
fix(themes): release lock before mutating MergedDictionaries (A-006)
HadenSmith May 4, 2026
736de84
fix(database-manager): validate SQL identifiers at the API boundary (…
HadenSmith May 4, 2026
54496bd
fix(avalondock): narrow empty catch in SetResourcesFromObject (B-011)
HadenSmith May 4, 2026
9c3fc7f
fix(oxyplot): persist Series.IsHitTestEnabled and EdgeRenderingMode (…
HadenSmith May 4, 2026
437f598
fix(oxyplot): persist Plot.TextColor on round-trip (D-004)
HadenSmith May 4, 2026
3e86d4a
fix(oxyplot): persist user-settable Axis DPs (D-005)
HadenSmith May 4, 2026
37f5c1e
fix(oxyplot): return null for unknown annotation type (D-006)
HadenSmith May 4, 2026
da41c5c
fix(avalondock): docking-button arrows use Path with DynamicResource …
HadenSmith May 4, 2026
e029157
fix(avalondock): NavigatorWindow + OverlayWindow inherit MainWindow t…
HadenSmith May 4, 2026
13c1f5c
fix(avalondock): unfreeze accent brushes that bind a runtime Color (B…
HadenSmith May 4, 2026
a7cba54
fix(avalondock): MenuItem arrow uses DynamicResource brush, not Foreg…
HadenSmith May 4, 2026
1a9ccd9
fix(undo): PropertyChangeAction merges via monotonic Stopwatch ticks …
HadenSmith May 4, 2026
0d95342
fix(undo): UndoableStateBridge SuspendRecording uses reference counte…
HadenSmith May 4, 2026
6b4b5f8
fix(undo): restore action on stack if Undo/Redo replay throws (A-004,…
HadenSmith May 4, 2026
fcd6e72
fix(framework-interfaces): ElementBaseBuff RaisePropertyChange promot…
HadenSmith May 4, 2026
64403e8
fix(framework-interfaces): MoveElement participates in undo/redo (A-007)
HadenSmith May 4, 2026
e901266
fix(framework-interfaces): BasicMessageItem identity is stable across…
HadenSmith May 4, 2026
7c48f7e
fix(framework-ui): RestoreFromBackup copies + opens, deletes only on …
HadenSmith May 4, 2026
2189b4b
fix(expression-parser): float operands widen via FloatingPoint flag (…
HadenSmith May 4, 2026
ee4fc96
fix(expression-parser): integer overflow promotes to long/double, att…
HadenSmith May 4, 2026
fd1cafe
fix(expression-parser): lexer recognizes scientific-notation numbers …
HadenSmith May 4, 2026
9c78608
fix(expression-parser): RANDINTBETWEEN inclusive on max (C-004)
HadenSmith May 4, 2026
e84628c
fix(database-manager): GetDefaultFromType throws; ApplyCellEdit guard…
HadenSmith May 4, 2026
3809155
fix(avalondock): null-deref / Single() cluster (B-003, B-004, B-005, …
HadenSmith May 4, 2026
90a9ea7
fix(controls): reference-type DependencyProperty defaults are per-ins…
HadenSmith May 4, 2026
0668d8f
Revert "fix(avalondock): MenuItem arrow uses DynamicResource brush, n…
HadenSmith May 4, 2026
55f951d
fix(framework): Phases 3-5 audit remediation batch
HadenSmith May 4, 2026
9504ecb
test(framework): Phase 6 regression-pin tests for top-15 audit findings
HadenSmith May 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ type: software
title: "WPF Framework"
version: "1.0.0"
date-released: "2026-04-29"
license: BSD-3-Clause
license: 0BSD
repository-code: "https://github.com/USACE-RMC/WPF-Framework"
url: "https://github.com/USACE-RMC/WPF-Framework"
abstract: >-
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,4 @@ If you discover a security vulnerability, please do **not** open a public issue.

## License

See [LICENSE](LICENSE) for details. This software is provided by USACE-RMC under a BSD-style license with a no-endorsement clause.
See [LICENSE](LICENSE) for details. This software is provided under the Zero-Clause BSD (0BSD) license.
5 changes: 1 addition & 4 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
<Authors>C. Haden Smith, Woodrow L. Fields, Julian Gonzalez</Authors>
<Company>USACE-RMC</Company>
<Product>WPF Framework</Product>
<Copyright>Copyright (c) 2026 U.S. Army Corps of Engineers, Risk Management Center</Copyright>
<PackageProjectUrl>https://github.com/USACE-RMC/WPF-Framework</PackageProjectUrl>
<RepositoryUrl>https://github.com/USACE-RMC/WPF-Framework</RepositoryUrl>
<RepositoryType>git</RepositoryType>
Expand All @@ -23,9 +22,8 @@
<EmbedUntrackedSources>true</EmbedUntrackedSources>
<DebugType>embedded</DebugType>

<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageLicenseExpression>0BSD</PackageLicenseExpression>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>

<!--
Treat XML-doc warnings as errors so missing or malformed documentation on public
Expand All @@ -42,7 +40,6 @@
</PropertyGroup>

<ItemGroup Condition="'$(IsWpfFrameworkLibrary)' == 'true'">
<None Include="$(MSBuildThisFileDirectory)LICENSE" Pack="true" PackagePath="\" Visible="false" />
<None Include="$(MSBuildThisFileDirectory)README.md" Pack="true" PackagePath="\" Visible="false" />

<!-- Reproducible builds: https://github.com/dotnet/reproducible-builds -->
Expand Down
20 changes: 9 additions & 11 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
NOTICE:
The U.S. Army Corps of Engineers, Risk Management Center (USACE-RMC) makes no guarantees about the results, or appropriateness of outputs, obtained from WPF Framework.

LIST OF CONDITIONS:
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above notice, this list of conditions, and the following disclaimer.
* Redistributions in binary form must reproduce the above notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution.
* The names of the U.S. Government, the U.S. Army Corps of Engineers, the Institute for Water Resources, or the Risk Management Center may not be used to endorse or promote products derived from this software without specific prior written permission. Nor may the names of its contributors be used to endorse or promote products derived from this software without specific prior written permission.

DISCLAIMER:
THIS SOFTWARE IS PROVIDED BY THE U.S. ARMY CORPS OF ENGINEERS RISK MANAGEMENT CENTER (USACE-RMC) "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL USACE-RMC BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Permission to use, copy, modify, and/or distribute this software for
any purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE
FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# WPF Framework

[![CI](https://github.com/USACE-RMC/WPF-Framework/actions/workflows/Integration.yml/badge.svg)](https://github.com/USACE-RMC/WPF-Framework/actions/workflows/Integration.yml)
[![License: BSD-3-Clause](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](LICENSE)
[![License: 0BSD](https://img.shields.io/badge/License-0BSD-blue.svg)](LICENSE)

WPF Framework is a free and open-source .NET 10.0 application framework for building desktop project management applications, developed by the U.S. Army Corps of Engineers Risk Management Center ([USACE-RMC](https://www.rmc.usace.army.mil/)). It provides a complete application shell with docking layout, project explorer, theme switching, undo/redo, and specialized controls for charting, databases, expression parsing, and directed acyclic graphs.

Expand Down Expand Up @@ -150,7 +150,7 @@ Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines

## License

This project is licensed under a BSD-3-Clause license. See [LICENSE](LICENSE) for details.
This project is licensed under the Zero-Clause BSD (0BSD) license — a permissive license with no attribution or notice requirements. See [LICENSE](LICENSE) for details.

## Authors

Expand Down
2 changes: 1 addition & 1 deletion codemeta.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"version": "1.0.0",
"dateCreated": "2025-12-29",
"dateModified": "2026-04-29",
"license": "https://spdx.org/licenses/BSD-3-Clause",
"license": "https://spdx.org/licenses/0BSD",
"codeRepository": "https://github.com/USACE-RMC/WPF-Framework",
"issueTracker": "https://github.com/USACE-RMC/WPF-Framework/issues",
"applicationCategory": "Desktop application framework",
Expand Down
4 changes: 2 additions & 2 deletions docs/oxyplot-controls.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ The OxyPlotControls library provides WPF controls for configuring and interactin

## OxyPlotToolbar

`OxyPlotToolbar` is a `UserControl` (implementing `IDisposable`) that attaches to an `OxyPlot.Wpf.Plot` and provides interactive charting tools.
`OxyPlotToolbar` is a `UserControl` that attaches to an `OxyPlot.Wpf.Plot` and provides interactive charting tools. Custom cursors are held in a process-wide static cache, so each toolbar instance is cheap and no explicit disposal is required.

### Dependency Properties

Expand Down Expand Up @@ -244,7 +244,7 @@ The `OxyPlotControls.Demo` project demonstrates the toolbar, property editors, a

## Best Practices

- **Dispose the toolbar** -- `OxyPlotToolbar` implements `IDisposable` for cursor cleanup. The `Unloaded` event handles this automatically, but explicit disposal is recommended when programmatically removing toolbars.
- **No toolbar disposal required** -- `OxyPlotToolbar` keeps its custom cursors in a static `CursorCache`, so individual toolbar instances do not own disposable resources. Theme-event subscriptions are released by the `Unloaded` handler, and Plot-side event subscriptions are released when the `Plot` dependency property is cleared or replaced.
- **Refresh bindings after deserialization** -- call `OxyPlotPropertiesControl.RefreshPlotBindings()` after `OxyPlotSettingsSerializer.FromXelement()` to ensure all property editors reflect the restored values.
- **Use `WithThemedModel` for export** -- when exporting to images or PDF, use `OxyPlotThemeManager.WithThemedModel` to temporarily apply the report theme without permanently modifying the plot.
- **Suppress property changes during theme application** -- set `Plot.SuppressPropertyChanged = true` before calling `ApplyTheme` to prevent undo/redo recording of theme changes. The toolbar handles this automatically.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<Color x:Key="{x:Static reskeys:ResourceKeys.ControlAccentColorKey}">#1ba1e2</Color>

<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.ControlAccentBrushKey}"
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" options:Freeze="true" />
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" />

<!-- General -->
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.Background}" Color="#293955" options:Freeze="true" />
Expand Down Expand Up @@ -150,7 +150,7 @@
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.DockingButtonBackgroundBrushKey}"
Color="#20000000" options:Freeze="true" />
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.DockingButtonForegroundBrushKey}"
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" options:Freeze="true" />
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" />
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.DockingButtonForegroundArrowBrusKey}"
Color="Black" options:Freeze="true" />

Expand All @@ -162,7 +162,7 @@

<!-- Preview Box is the highlighted rectangle that shows when a drop area in a window is indicated -->
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.PreviewBoxBorderBrushKey}"
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" options:Freeze="true" />
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" />
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.PreviewBoxBackgroundBrushKey}"
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}"
Opacity="0.5"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<Color x:Key="{x:Static reskeys:ResourceKeys.ControlAccentColorKey}">#1ba1e2</Color>

<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.ControlAccentBrushKey}"
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" options:Freeze="true" />
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" />

<!-- General -->
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.Background}" Color="#2D2D30" options:Freeze="true" />
Expand All @@ -31,7 +31,7 @@

<!--AccentColor -->
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.AutoHideTabHoveredText}"
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" options:Freeze="true" />
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" />

<!-- Document Well : Overflow Button -->
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.DocumentWellOverflowButtonDefaultGlyph}" Color="#F1F1F1" options:Freeze="true" />
Expand Down Expand Up @@ -155,7 +155,7 @@
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.DockingButtonBackgroundBrushKey}"
Color="#20000000" options:Freeze="true" />
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.DockingButtonForegroundBrushKey}"
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" options:Freeze="true" />
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" />
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.DockingButtonForegroundArrowBrusKey}"
Color="White" options:Freeze="true" />

Expand All @@ -167,7 +167,7 @@

<!-- Preview Box is the highlighted rectangle that shows when a drop area in a window is indicated -->
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.PreviewBoxBorderBrushKey}"
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" options:Freeze="true" />
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" />
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.PreviewBoxBackgroundBrushKey}"
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}"
Opacity="0.5"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@

<!--AccentColor -->
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.AutoHideTabHoveredText}"
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" options:Freeze="true" />
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" />

<!-- Document Well : Overflow Button -->
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.DocumentWellOverflowButtonDefaultGlyph}" Color="#717171" options:Freeze="true" />
Expand Down Expand Up @@ -156,7 +156,7 @@
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.DockingButtonBackgroundBrushKey}"
Color="#20000000" options:Freeze="true" />
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.DockingButtonForegroundBrushKey}"
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" options:Freeze="true" />
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" />
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.DockingButtonForegroundArrowBrusKey}"
Color="Black" options:Freeze="true" />

Expand All @@ -168,7 +168,7 @@

<!-- Preview Box is the highlighted rectangle that shows when a drop area in a window is indicated -->
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.PreviewBoxBorderBrushKey}"
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" options:Freeze="true" />
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}" />
<SolidColorBrush x:Key="{x:Static reskeys:ResourceKeys.PreviewBoxBackgroundBrushKey}"
Color="{DynamicResource {x:Static reskeys:ResourceKeys.ControlAccentColorKey}}"
Opacity="0.5"
Expand Down
Loading