Forum Widgets
Latest Discussions
WPF application becomes unresponsive after plugging/ unplugging USB device supporting pen events
I've run across an issue on Windows 10 and 11 where WPF apps seem to become unresponsive when unplugging or plugging in a USB device that registers as an input device that can receive touch/stylus events. This can be seen by creating a basic WPF app in Visual Studio, running it, and then adding/removing one of these devices. I used Spy++ to see which messages the app was receiving. I saw a number of messages I was expecting to see - WM_DEVICECHANGE, WM_POINTERDEVICECHANGE, as well as 0x02C8 or 0x02C9 (WM_TABLET_ADDED or WM_TABLET_DELETED, respectively). However, after this, thousands (or sometimes tens of thousands) of messages were sent to a window belonging to the app that is at (0,0) with dimensions 0x0. Its caption is "OLEChannelWnd". The messages are mostly the same: They're all posted to the window The message ID is 0x0400 (WM_USER + 0) The wParam is always the same (0x0000BABE) The lParam varies each time I restart the WPF app, but they seem to settle on a small number of values - for example, the last time I tried this, I saw 0x05D08BB0 4-6 times, then 0x0D1B8E98 a dozen or more times, then 0x0D1B7B90 several times, and so on. During these messages, the app would become unresponsive for as long as these messages were posted. This could take upwards of 5- 10 minutes before recovering, and sometimes would result in a crash from the app running out of memory. After doing research online, I found some posts that talked about a possible issue in the PenThreadWorker thread - that it could be running into some kind of deadlock when initializing certain objects. I also found several posts that mentioned disabling the stylus & touch events by setting "Switch.System.Windows.Input.Stylus.DisableStylusAndTouchSupport". I can add this to the app.config for my app as follows: <runtime> <AppContextSwitchOverrides value="Switch.System.Windows.Input.Stylus.DisableStylusAndTouchSupport=true" /> </runtime> or, equivalently, I can do the following during application startup: AppContext.SetSwitch("Switch.System.Windows.Input.Stylus.DisableStylusAndTouchSupport", true); This does fix the issue - I don't see these WM_USER messages being sent to the app, and as such the app becomes immediately responsive once the device is plugged/unplugged. However, one of the WPF apps that I'm working with (i.e. not the simple test app) needs to process tablet events, so this setting can't be used there. Furthermore, it can only be set either in app.config or during application startup - any calls to it after that are ignored. I've tried this with .NET 4.5.1, .NET 4.6 (which is required to use the code-based method) as well as .NET 4.8.1, but in all cases I see this same result. As mentioned, I know this isn't an issue unique to my app since I'm able to reproduce this issue by creating a basic WPF app and following the same steps. Additionally, I observed the same issue with other test applications I've found online while trying to troubleshoot this issue. Interestingly, I have observed this within Microsoft's own Visual Studios 2017 (which is what I'm using for development) and have found a few other threads online from other people running into the same problem with their apps. I have also tried updating to later Visual Studios versions for development of my app, but this doesn't solve the issue either. Finally, I followed this post from Microsoft regarding https://learn.microsoft.com/en-us/dotnet/desktop/wpf/advanced/disable-the-realtimestylus-for-wpf-applications and still was unable to fix the issue.shepburnOct 07, 2025Copper Contributor30Views0likes0Comments- SampsonYeSep 11, 2025Copper Contributor84KViews1like8Comments
Is clean architecture overkill for small teams maintaining a single web app ?
I've been exploring clean architecture and while I appreciate its separation of concerns and testability, I can't help but wonder, it is over for small teams ( say 2-4 devs) maintaining a single, relatively stable web application ? Implementing clean architecture means more layers, more interfaces, and potenitally more ceremony, which might slow things down, especially if the team is trying to move quickly or lacks deep experience with the pattern. At the same time, I get the value of long-term maintainability and scalability, even for small projects that could grow. What pain points or benefits did you encounter ? Did it help or hinder onboarding, testing or refactoring ?SolvedJohnDobbinsAug 28, 2025Iron Contributor188Views5likes2CommentsMAUI Android API 35: Action Bar still visible despite NavBarIsVisible=False
Before API 35 it was ok. I am using .NET 9, Android API 35, using Shell, etc. I have tried: Shell.NavBarIsVisible, NavigationPage.HasNavigationBar, theme tweaks, etc. What’s still happening: Title bar remains visible on Android.manjitAug 22, 2025Copper Contributor49Views0likes0CommentsIs it normal for CollectionView to lag on larger lists, or am I missing an optimizaiton ?
I've been working with .NET MAUI recently and have run into some performance concerns when using CollectionView. Specifically, when binding a large dataset ( let's say 500+ items), the scrolling becomes noticeably sluggish, especially on Android I've tried a few basic optimizations, like setting CachingStrategy = "RecycleElement" and minimizing the complexity of the DataTemplate, but the lag persists . I'm not using images or heavy UI elements either, it's just a simple text-based item template. is this kind of lag expected with MAUI's CollectionView or is there a known workaround ? Are there additional performance tuning steps I should try ( virtualization tricks, async loading, grouping) ?SolvedBonillaAug 09, 2025Iron Contributor172Views7likes2CommentsWPF App on Windows Server (RDP) – Error Sometimes When Opening New Window
Hi everyone, I have a WPF app that runs from a network drive. It works fine on Windows 11 at the office. But when users run it through Remote Desktop on a Windows Server 2019 virtual machine (using the exact same .exe from the same network drive location), some of them get an error when opening a new window. The app starts normally, but the error happens only when opening another window — and not for every user. Strangely, the next day the same user can open the app and use it normally again without changing anything. Has anyone seen this before or know how to fix it? I’ve also attached: A screenshot of the error message The function that causes the error Thanks a lot!3ColorCatAug 04, 2025Copper Contributor71Views0likes0CommentsHow to decouple views from view models using CommunityToolKit.mvvm
I am writing my first MVVM app using CommunityTookit.mvvm. I am using as reference the Micrsoft Learning link https://learn.microsoft.com/en-us/dotnet/communitytoolkit/mvvm/ioc. This link shows the setting of the viewmodel to the view DataContext using the following statement in the view's .cs file: this.DataContext = App.Current.Services.GetService<ContactsViewModel>(); The problem with this as I see it is that this statement couples the view to the view model, in this case ContactsViewModel. This means that in another app the view cannot be used with another viewmodel without modifying the view, i.e. changing ContactsViewModel above to another viewmodel type. This means that the view cannot be stored in a common library that is shared among different apps. There is a C# Corner example with the older MVVM TookKit that solved this problem using a ViewModelLocator class. This project is found https://www.c-sharpcorner.com/article/getting-started-with-mvvm-light-with-wpf/. The solution is to put the following code in the view's XAML file: DataContext="{Binding Main, Source={StaticResource Locator}}" The source object for the binding is found by looking for a ResourceDictionary that is in the scope of the view and which has an entry whose key is "Locator". In app.xaml which by definition is always in scope we have: <Application.Resources> <ResourceDictionary> <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" /> </ResourceDictionary> </Application.Resources> The Dictionary element with key "Locator" is an object of type ViewModelLocator. In the ViewModelLocator class there is a Main property that always returns an instance of MainViewModel: public MainViewModel Main { get { return ServiceLocator.Current.GetInstance<MainViewModel>(); } } In our example, the view's DataContext binds to the Main property of the ViewModelLocator object. The value of the Main property is a MainViewModel object and this becomes the DataContext of the view. We can now in a different app re-use the view without changing it. All we have to do in the next app is to create a different ViewModelLocator object that specifies a different viewmodel in its Main property. The view is now completely decoupled from the view model. My question is, how would we de-couple the view from the view model using the CommunityToolkit.Mvvm? Do we also use a ViewModelLocator class? Is there a more elegant way with dependency injection? Another question I have is, suppose we want to use in one app the same view twice with different view models. An example of where we might want to do this is if we had a view that displayed a chart. It is conceivable that we might want to have more than one view model display its data using the same chart view. I cannot see how to do this in either of the above Microsoft or C# Corner examples.CSharpDevJul 12, 2025Copper Contributor121Views1like0CommentsDeeply Disappointed with Copilot+
At the company where I work, we purchased a Copilot+ laptop with the hope of being able to use the new Windows AI libraries, such as Windows.AI.TextRecognition. The library works well, but we are unable to process more than 2 documents concurrently, which severely limits our document processing capacity. We also feel misled, as we did not see any mention anywhere of such a limitation regarding the library. I would appreciate it if a Microsoft representative could confirm whether this limitation exists and, if not, let us know if there is any way to increase this limit. Thank you in advance.indaJul 10, 2025Copper Contributor96Views0likes1CommentWebView download in .NET MAUI
Hi everyone, I'm Manuel. I need to create an application which downloads a file from web site. I used a WebViewer and allowed into AndroidManifest.xml external memory read and write. Everything works fine until I press the download button from the website: nothing happens. I simply defined a webview into my MainApp.xaml.cs file (because it must be dynamic) and added into my GridLayout. I tried to print external memory read/write permissions, but it says it's not allowed. Can anyone help me? I'm locked here from weeks and don't know how to solve. Thank you so muchSmanuel104Jul 01, 2025Copper Contributor586Views0likes1CommentSupercharging Solution Architecture with GitHub Copilot Prompts Every Architect Should Know
As a Solution Architect, you’re often juggling high-level system design, reviewing code, drafting technical documentation, and ensuring that your solutions meet both business and technical requirements. GitHub Copilot, powered by advanced AI, isn’t just for developers—it can be a powerful assistant for Solution Architects too. In this blog, we’ll explore how you can craft GitHub Copilot prompts to accelerate your architectural workflow, design decisions, and documentation. https://dellenny.com/supercharging-solution-architecture-with-github-copilot-prompts-every-architect-should-know/ Copilot Chatmicrosoft 365 copilotTag Like81Views0likes0Comments
Resources
Tags
- .NET MAUI155 Topics
- Windows Forms63 Topics
- android55 Topics
- ios39 Topics
- Xamarin.Forms34 Topics
- Blazor32 Topics
- WPF31 Topics
- Console Apps30 Topics
- UWP18 Topics
- macos17 Topics