Tag: uwp

UWP中的模板控制与自定义控制。 网上找不到明确的答案

在我的UWP应用程序中,我的控制选项是用户控制和模板控制。 我对用户控件的理解在这一点上很清楚。 我被告知自定义控件的样式/模板仅在内存中实例化一次,并且这仅在首次使用控件时发生。 这就是我想要的,因为我知道我正在创建的控件将用于ListView。 然而,在本书XAML Unleashed中,作者通过从用户控件开始创建自定义控件,然后简单地更改它的基类。 问题是他创建的控件调用InitializeComponent() 。 我听说这种类使用更多内存,因为它为ListView中的每个项重新实例化。 另外,我从未想过Custom Controls使用了InitializeComponent()方法。 我以为只是调用this.DefaultStyleKey = typeof(MyClass); 在构造函数中。 是什么赋予了? 我很困惑什么是…… 最后,为什么模板控件的样式/模板放在全局Generic.xaml文件中,而不是它自己的单独文件(即xaml文件和代码隐藏文件对)? 如果控件应该是自定义的和“可移植的”,那么它不应该与其他代码完全分开吗? 我没有发现任何一篇文章在任何级别上都详细解释了这些内容。

使用指向可执行文件的“fullTrustProcess”创建应用程序包时出错

我正在尝试使用UWP应用程序部署示例应用程序以桥接AppServices。 该示例运行并构建得很好,但是当我尝试按照指南打包整个事情时,它给了我一个错误。 链接到包装指南 这里是AppService Bridge示例存储库。 错误信息: Error Manifest validation error: Line 36, Column 64, Reason: The file name “BackgroundProcess.exe” declared for element “*[local-name()=’Applications’]/*[local-name()=’Application’]/*[local-name()=’Extensions’]/*[local-name()=’Extension’ and @Category=’windows.fullTrustProcess’]” doesn’t exist in the package. 我发现代码片段会产生错误,但我还没有找到解决方法。 如果我从文件Package.appxmanifest中 删除以下代码,Visual studio将成功构建包: 但这显然也会消除过程中的桥接,这是本练习的重点。 这似乎与这个问题有些相关,但不同之处在于我有一个.exe并且这个问题似乎是为了回答它.dlls: 为商店构建通用应用程序时出错:“清单引用文件’MyAppName.dll’,它不是有效负载的一部分。” (更新UWP工具似乎没有解决它。)

如何在UWP应用程序中使用autofac?

我在UWP应用程序中使用autofac。 在我的App实例中,我正在设置依赖项,如下所示: public sealed partial class App { private readonly IFacade m_facade; public App() { InitializeComponent(); m_facade = InitializeDependencies(); Suspending += OnSuspending; } private IFacade InitializeDependencies() { var containerBuilder = new ContainerBuilder(); // Registers all the platform-specific implementations of services. containerBuilder.RegisterType() .As() .SingleInstance(); containerBuilder.RegisterType() .As() .SingleInstance(); containerBuilder.RegisterType() .As() .SingleInstance(); … containerBuilder.RegisterType() .As(); // Auto-magically resolves […]

从代码绑定到WinRT / UWP中的自定义附加属性

我正在尝试从一个针对多个框架(WPF,WinRT,UWP等)的库中的代码创建绑定,并且我正在打砖墙。 我想要绑定的属性是一个自定义附加属性。 在WPF中,我可以将DependencyProperty本身作为绑定路径传递: new PropertyPath(MyClass.MyAttachedProperty) 但是在WinRT中, PropertyPath类只接受一个字符串。 我试图传递属性的名称,如下所示: new PropertyPath(“(MyClass.MyAttachedProperty)”) 但当然它不起作用,因为我的类不在默认命名空间中。 在XAML中,我可以将命名空间映射到前缀并使用该前缀,但据我所知,不可能从代码中执行此操作。 有没有办法在代码中创建这个绑定?

在Windows 10(1803)上,如果WPF透明窗口覆盖它们,则所有应用程序都会丢失触摸或手写笔

如果我使用一个简单的空窗口创建一个新的WPF应用程序,如下面所示的代码,我发现WPF应用程序覆盖的所有应用程序都失去了触摸或手写笔反应。 只有在Windows 10升级到1803(10.0.17134.0)时才能重现此问题。 我写了另一个WPF应用程序来找出发生了什么。 所以我将一个StylusDown事件添加到Window,如下所示的代码: // This code is in another WPF application. private void OnStylusDown(object sender, StylusDownEventArgs e) { // Set a breakpoint here. } 但是在我关闭顶部的透明WPF窗口之前,断点从未到达。 我将非常简单的代码推送到GitHub: dotnet-campus / TouchIssueOnWindows10.0.17134 。 克隆它可能会有所帮助。 为什么会发生这种情况以及如何解决? 任何回复表示赞赏。

获取UWP app文件夹中的所有文件

对于UWP,可以轻松地将app本地文件夹中的所有文件作为: IReadOnlyList files = await ApplicationData.Current.LocalFolder.GetFilesAsync(); 您现在可以迭代文件列表,甚至可以获得有关各个文件的更多信息。 我想为app文件夹添加类似的all-file-getter,例如,考虑存储app * .png文件的/ Assets文件夹。 具有已知名称的单个文件没有问题; 我可以很容易地将它称为: StorageFile.GetFileFromApplicationUriAsync(new Uri(@”ms-appx:///Assets/StoreLogo.png”)) 因此,我的问题是,在app文件夹中获取所有文件是否类似,例如/ Assets文件夹? 逻辑上,它应该类似于StorageFile.GetFilesFromApplicationFolderUriAsync(new Uri(@”ms-appx:///Assets”))但不知道是否存在上面显示的LocalFolder的等价物。

UWP编译绑定x:Bind产生内存泄漏

在开发UWP应用程序时,我最近发现了很多内存泄漏,导致我的页面被GC收集。 我的页面上有一个ContentPresenter,如: 删除内容后,或用动态{Binding}替换它 – 当我从中导航时收集页面。 否则它会留在内存中。 是错误还是我做错了什么? 有没有办法释放并清除导航时的所有绑定? 更新:这似乎是微软内部已知的问题,如此处所述。 但是,就我自己的测试/应用程序使用情况而言,x:Bind保留的数据仍会在一段时间后收集,例如,当您导航到相同的页面或创建相同的控件一段时间。 我可以看到创建了新对象,但在某些时候收集了旧对象。 所以对我而言,它似乎并不是导致内存不足的严重问题,它只是不允许像动态绑定那样快速收集对象。

UWP Windows 10应用程序内存在导航上增加

我有一个UWP Windows 10应用程序,并注意到任务管理器中的内存使用量随着时间的推移而增加。 我将应用程序剥离,发现导航页面时内存正在增加。 所以我制作了一个只有几页的简单应用程序来测试,在这个简单的应用程序中内存仍在增加。 我有一个MainPage,可以将一个帧从Page1导航到Page2,然后返回一个计时器。 public sealed partial class MainPage : Page { private DispatcherTimer _timer; private bool _page1Showing; private bool _timerRunning; public MainPage() { this.InitializeComponent(); _timer = new DispatcherTimer(); _timer.Interval = new TimeSpan(0, 0, 0, 0, 200); _timer.Tick += _timer_Tick; } private void _timer_Tick(object sender, object e) { GC.Collect(); this.rootFrame.BackStack.Clear(); this.rootFrame.ForwardStack.Clear(); if (_page1Showing) […]

UWP ObservableCollection排序和分组

在UWP应用程序中,如何对ObservableCollection进行分组和排序并保持所有实时通知的良好性? 在我看过的大多数简单的UWP示例中,通常有一个ViewModel公开一个ObservableCollection,然后绑定到View中的ListView。 在ObservableCollection中添加或删除项目时,ListView会通过对INotifyCollectionChanged通知作出反应来自动反映更改。 在未分类或未分组的ObservableCollection的情况下,这一切都正常,但如果需要对集合进行排序或分组,似乎没有明显的方法来保留更新通知。 更重要的是,动态更改排序或组顺序似乎会引发重大的实施问题。 ++ 假设您有一个现有的datacache后端,该后端公开了一个非常简单的类Contact的ObservableCollection。 public class Contact { public string FirstName { get; set; } public string LastName { get; set; } public string State { get; set; } } 此ObservableCollection随时间而变化,我们希望在视图中呈现实时分组和排序列表,以响应datacache中的更改进行更新。 我们还希望为用户提供在运行时切换LastName和State之间的分组的选项。 ++ 在WPF世界中,这是相对微不足道的。 我们可以创建一个简单的ViewModel,引用数据缓存,按原样显示缓存的Contacts集合。 public class WpfViewModel { public WpfViewModel() { _cache = GetCache(); } Cache _cache; public ObservableCollection Contacts { […]

无法识别StartupTask类

我正在尝试让我的Centennial应用程序在登录时自动启动。 根据这篇文章可以做到。 但是以编程方式禁用它我需要使用Windows.ApplicationModel.StartupTask类,Visual Studio拒绝识别它。 那个class级怎么用?