From 2a061675377f0cd3b2bbb4224e1aa70ec10dd686 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20S=CC=8Colte=CC=81s?= Date: Tue, 4 Mar 2025 11:36:02 +0100 Subject: [PATCH 1/4] Execute using Dispatcher --- .../Core/DataContextChangedTrigger.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Xaml.Interactions.Custom/Core/DataContextChangedTrigger.cs b/src/Avalonia.Xaml.Interactions.Custom/Core/DataContextChangedTrigger.cs index d1ed6a7fe..cfafef5dc 100644 --- a/src/Avalonia.Xaml.Interactions.Custom/Core/DataContextChangedTrigger.cs +++ b/src/Avalonia.Xaml.Interactions.Custom/Core/DataContextChangedTrigger.cs @@ -1,3 +1,4 @@ +using Avalonia.Threading; using Avalonia.Xaml.Interactivity; namespace Avalonia.Xaml.Interactions.Custom; @@ -10,7 +11,10 @@ public class DataContextChangedTrigger : StyledElementTrigger /// protected override void OnDataContextChangedEvent() { - Execute(parameter: null); + Dispatcher.UIThread.Post(() => + { + Execute(parameter: null); + }); } private void Execute(object? parameter) From d1d35388dba3d1c9eccf3ebd7436cb873e35cfe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20S=CC=8Colte=CC=81s?= Date: Tue, 4 Mar 2025 11:36:06 +0100 Subject: [PATCH 2/4] Execute using Dispatcher --- .../Core/ResourcesChangedTrigger.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Xaml.Interactions.Custom/Core/ResourcesChangedTrigger.cs b/src/Avalonia.Xaml.Interactions.Custom/Core/ResourcesChangedTrigger.cs index a5c8628be..5b2b41f46 100644 --- a/src/Avalonia.Xaml.Interactions.Custom/Core/ResourcesChangedTrigger.cs +++ b/src/Avalonia.Xaml.Interactions.Custom/Core/ResourcesChangedTrigger.cs @@ -1,3 +1,4 @@ +using Avalonia.Threading; using Avalonia.Xaml.Interactivity; namespace Avalonia.Xaml.Interactions.Custom; @@ -10,7 +11,10 @@ public class ResourcesChangedTrigger : StyledElementTrigger /// protected override void OnResourcesChangedEvent() { - Execute(parameter: null); + Dispatcher.UIThread.Post(() => + { + Execute(parameter: null); + }); } private void Execute(object? parameter) From e79f36e90ca490d180a9787bd1e1b0c5488d4f8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20S=CC=8Colte=CC=81s?= Date: Tue, 4 Mar 2025 11:36:10 +0100 Subject: [PATCH 3/4] Execute using Dispatcher --- .../Core/ActualThemeVariantChangedTrigger.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.Xaml.Interactions.Custom/Core/ActualThemeVariantChangedTrigger.cs b/src/Avalonia.Xaml.Interactions.Custom/Core/ActualThemeVariantChangedTrigger.cs index 3f910707c..51b259f60 100644 --- a/src/Avalonia.Xaml.Interactions.Custom/Core/ActualThemeVariantChangedTrigger.cs +++ b/src/Avalonia.Xaml.Interactions.Custom/Core/ActualThemeVariantChangedTrigger.cs @@ -1,3 +1,4 @@ +using Avalonia.Threading; using Avalonia.Xaml.Interactivity; namespace Avalonia.Xaml.Interactions.Custom; @@ -10,7 +11,10 @@ public class ActualThemeVariantChangedTrigger : StyledElementTrigger protected override void OnActualThemeVariantChangedEvent() { - Execute(parameter: null); + Dispatcher.UIThread.Post(() => + { + Execute(parameter: null); + }); } private void Execute(object? parameter) From eb401a09e64178ca2c95ff8ecb74cefb9b7cff96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20S=CC=8Colte=CC=81s?= Date: Tue, 4 Mar 2025 11:36:18 +0100 Subject: [PATCH 4/4] Add sample --- .../ViewModels/MainWindowViewModel.cs | 9 +++++++++ samples/BehaviorsTestApplication/Views/MainWindow.axaml | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/samples/BehaviorsTestApplication/ViewModels/MainWindowViewModel.cs b/samples/BehaviorsTestApplication/ViewModels/MainWindowViewModel.cs index 39aa4527d..63911eceb 100644 --- a/samples/BehaviorsTestApplication/ViewModels/MainWindowViewModel.cs +++ b/samples/BehaviorsTestApplication/ViewModels/MainWindowViewModel.cs @@ -74,6 +74,8 @@ public MainWindowViewModel() IsLoading = true; Progress = 30; + DataContextChangedCommand = ReactiveCommand.Create(DataContextChanged); + InitializeCommand = ReactiveCommand.Create(Initialize); MoveLeftCommand = ReactiveCommand.Create(() => Position -= 5.0); @@ -115,6 +117,8 @@ public MainWindowViewModel() public IObservable Values { get; } + public ICommand DataContextChangedCommand { get; set; } + public ICommand InitializeCommand { get; set; } public ICommand MoveLeftCommand { get; set; } @@ -133,6 +137,11 @@ public MainWindowViewModel() public ICommand GetClipboardTextCommand { get; set; } + private void DataContextChanged() + { + Console.WriteLine("DataContextChanged"); + } + private void Initialize() { Console.WriteLine("InitializeCommand"); diff --git a/samples/BehaviorsTestApplication/Views/MainWindow.axaml b/samples/BehaviorsTestApplication/Views/MainWindow.axaml index 88346d825..03b191add 100644 --- a/samples/BehaviorsTestApplication/Views/MainWindow.axaml +++ b/samples/BehaviorsTestApplication/Views/MainWindow.axaml @@ -6,16 +6,23 @@ Title="XamlBehaviors Test Application" Width="1000" Height="700" x:DataType="vm:MainWindowViewModel"> + + + + + + +