Skip to content

Commit d038712

Browse files
authored
now avoiding some missing resource warnings #2040 (#2051)
* now avoiding some missing resource warnings #2040 * now setting default resources in PropertyChangedCallback * Revert "now setting default resources in PropertyChangedCallback" This reverts commit 039d49c. * keep reference to created SnackbarMessage
1 parent dd9a28e commit d038712

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

MaterialDesignThemes.Wpf/SnackbarMessage.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Windows.Controls;
55
using System.Windows.Controls.Primitives;
66
using System.Windows.Input;
7+
using System.Windows.Media;
78
using MaterialDesignThemes.Wpf.Converters;
89

910
namespace MaterialDesignThemes.Wpf
@@ -18,6 +19,12 @@ namespace MaterialDesignThemes.Wpf
1819
[TemplatePart(Name = ActionButtonPartName, Type = typeof(ButtonBase))]
1920
public class SnackbarMessage : ContentControl
2021
{
22+
internal static readonly ResourceDictionary defaultResources = new ResourceDictionary
23+
{
24+
{ "SecondaryHueMidBrush", Brushes.Transparent },
25+
{ "MaterialDesignSnackbarRipple", Brushes.Transparent },
26+
};
27+
2128
public const string ActionButtonPartName = "PART_ActionButton";
2229
private Action _templateCleanupAction = () => { };
2330

MaterialDesignThemes.Wpf/SnackbarMessageQueue.cs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Collections.Generic;
33
using System.Diagnostics;
44
using System.Linq;
@@ -338,7 +338,10 @@ Snackbar FindSnackbar() => _pairedSnackbars.FirstOrDefault(sb =>
338338
private async Task ShowAsync(Snackbar snackbar, SnackbarMessageQueueItem messageQueueItem, ManualResetEvent actionClickWaitHandle)
339339
{
340340
//create and show the message, setting up all the handles we need to wait on
341-
var mouseNotOverManagedWaitHandle = CreateAndShowMessage(snackbar, messageQueueItem, actionClickWaitHandle);
341+
var tuple = CreateAndShowMessage(snackbar, messageQueueItem, actionClickWaitHandle);
342+
var snackbarMessage = tuple.Item1;
343+
var mouseNotOverManagedWaitHandle = tuple.Item2;
344+
342345
var durationPassedWaitHandle = new ManualResetEvent(false);
343346
StartDuration(messageQueueItem.Duration.Add(snackbar.ActivateStoryboardDuration), durationPassedWaitHandle);
344347

@@ -352,14 +355,18 @@ private async Task ShowAsync(Snackbar snackbar, SnackbarMessageQueueItem message
352355
//this for now...at least it is prevent extra call back hell
353356
await Task.Delay(snackbar.DeactivateStoryboardDuration);
354357

358+
//this prevents missing resource warnings after the message is removed from the Snackbar
359+
//see https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit/issues/2040
360+
snackbarMessage.Resources = SnackbarMessage.defaultResources;
361+
355362
//remove message on snackbar
356363
snackbar.SetCurrentValue(Snackbar.MessageProperty, null);
357364

358365
mouseNotOverManagedWaitHandle.Dispose();
359366
durationPassedWaitHandle.Dispose();
360367
}
361368

362-
private static MouseNotOverManagedWaitHandle CreateAndShowMessage(UIElement snackbar,
369+
private static Tuple<SnackbarMessage, MouseNotOverManagedWaitHandle> CreateAndShowMessage(UIElement snackbar,
363370
SnackbarMessageQueueItem messageQueueItem, EventWaitHandle actionClickWaitHandle)
364371
{
365372
var clickCount = 0;
@@ -376,7 +383,7 @@ private static MouseNotOverManagedWaitHandle CreateAndShowMessage(UIElement snac
376383
};
377384
snackbar.SetCurrentValue(Snackbar.MessageProperty, snackbarMessage);
378385
snackbar.SetCurrentValue(Snackbar.IsActiveProperty, true);
379-
return new MouseNotOverManagedWaitHandle(snackbar);
386+
return Tuple.Create(snackbarMessage, new MouseNotOverManagedWaitHandle(snackbar));
380387
}
381388

382389
private static async Task WaitForCompletionAsync(

0 commit comments

Comments
 (0)