prism 相关问题

Prism是一个用于在WPF,Windows 10 UWP和Xamarin Forms中构建松散耦合,可维护和可测试的XAML应用程序的框架。

依赖MouseEventArgs的单元测试功能?

我目前正在开发一个类似 MSPaint 的 WPF 应用程序的项目。然而,我不使用铅笔工具或类似的东西绘画,而是使用物体(矩形、圆形、三角形等)......

回答 3 投票 0

.NET 编译绑定和 EventToCommand 行为

我有一个 .Net 9 MAUI 项目,带有简单的 View\ViewModel 设置并使用编译的绑定... 我有一个 .Net 9 MAUI 项目,具有简单的 View\ViewModel 设置并使用编译的绑定... <ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="MAUI.Pages.Views.PageView" ... xmlns:viewModels="clr-namespace:MAUI.Pages.ViewModels" x:DataType="viewModels:MainPageViewModel" > 在视图中,我有一个用于过滤列表的输入控件,我想在输入文本时触发 ViewModel 中的 DelegateCommand... <Entry x:Name="filterText" Grid.Column="1" IsVisible="true" Placeholder="Search here" ClearButtonVisibility="WhileEditing" TextColor="White" PlaceholderColor="White" HorizontalOptions="FillAndExpand"> <Entry.Behaviors> <prism:EventToCommandBehavior EventName="TextChanged" Command="{Binding FilterTextChangedCommand}" CommandParameter="{Binding Path=Text, Source={x:Reference filterText}, x:DataType={x:Null}}" /> </Entry.Behaviors> 在 ViewModel 中我定义了事件, private async Task onFilterTextChangedCommand(object obj) { _logger.Debug(""); if (obj != null) { searchText = obj as string; ApplyFilters(searchText); } else { await RefreshList(); } } 如果我没有在 CommandParameter 上指定 x:DataType={x:Null} ,则 VS 显示警告 “Binding: Property "Text" not found on "MAUI.Pages.ViewModels.MainPageViewModel" 我理解这一点页面的编译绑定是到 MainPageViewModel 的,文本路径不是它的属性。 但是,当我指定 x:DataType={x:Null} 时,我收到以下警告,“如果 x:DataType 不显式为 null,则可以编译绑定以提高运行时性能......” 我的问题是如何在 CommandParameter 中为条目控件的 Text 属性指定 x:DataType 以阻止 VS 发出有关已编译绑定(和“提高性能”)的警告,同时仍保持 Command 绑定本身到 ViewModel 的 DelegateCommand? 我使用 PrismLibrary 来实现 EventToCommandBehavior,但 MAUI 社区工具包具有相同的功能并抛出相同的警告。 该页面适用于为 CommandParamter 定义的 x:DataType={x:Null},但我想知道在这种情况下“正确”的方法是什么。 正如前面评论中提到的,正确的DataType是x:DataType="Entry"。

回答 1 投票 0

防止棱镜导航上的后退导航?

我试图阻止用户在 prism xamarin 表单上后退导航。 我遇到了困难,因为当我收到事件时,应用程序会更改页面。 如何阻止棱镜上的返回导航

回答 2 投票 0

如何使用 Prism 在 WPF 应用程序中(最好)在选项卡中实现范围服务?

我正在使用 Prism 框架创建 WPF 应用程序,并且遇到了依赖项注入范围的问题。我的应用程序包含多个选项卡(至少现在有 2 个),每个选项卡都有相同的

回答 1 投票 0

应用自定义样式时 Silverlight 4 + PRISM 中出现错误

情况: 带有 App.xaml 的“Shell”项目和 Styles/Default.xaml 中的资源字典,其中有趣的部分如下: 默认.xmal 情况: “Shell”项目,包含 App.xaml 和 Styles/Default.xaml 中的资源字典,其中包含有趣的部分: 默认.xmal <ResourceDictionary <Style x:Key="StandardTextBox" TargetType="TextBox"> ... </Style> </ResourceDictionary 应用程序.xaml <Application> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="Styles/Default.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </Application> 在模块项目中,我有一个表单: <TextBox Style="{StaticResource StandardTextBox}" /> 在运行时,我收到臭名昭著的“错误 HRESULT E_FAIL 已从对 COM 组件的调用返回”。例外。 有趣的是,在设计时,在VS中,样式在设计模式下应用得很好。 (VS.Net 如何发挥神奇作用,知道 Shell 项目中的 App.xaml 中有一个资源(模块项目根本没有引用该资源)令人费解……但我离题了) 我的总体目标是在 Shell 项目中与 App.xaml 分开的文件中定义资源,并在模块项目中本质上应用样式。 真正的问题是不包括另一个引用的样式。请参阅这个。

回答 1 投票 0

如何解析在 IContainerRegistry 中注册的同一接口的多个实例子级?

我是 Prism 中的新手,特别是 .NET 环境中的新手。 这是围绕问题的简要描述: 我有一个由多个接口(IRobot、IHuman、IElf、IVampire、ISaiyan)组成的层次结构子...

回答 1 投票 0

将 Xamarin Forms 迁移到毛伊岛,它可以在调试模式下工作,但不能在发布模式下工作?

我正在将 xamarin 表单迁移到 Maui 应用程序中,并且正在使用 Visual Studio Mac,我能够在调试模式下运行该应用程序,没有任何问题,但无法在发布模式下运行该应用程序。 我正在使用...

回答 1 投票 0

将值从窗口传递到子用户控件

我花了一天时间查看有关此主题的其他问题,但无法使此特定代码正常工作。 背景:我们使用 Prism 自动注册视图的视图模型并使用

回答 1 投票 0

如何使用 MVVM/PRISM 模式在数据网格上触发 OnPropertyChanged 事件

我有一个绑定到视图模型的 DataGrid,它具有 ObservableCollection 的 ItemSource。 ObservableCollection 又通过 EF / DbContext 绑定到 SQL Server 数据库。 我可以添加...

回答 1 投票 0

如何在DelegateCommand中使用异步方法

我想将异步方法链接到 Xamarin.Forms 中 prism 框架中的委托命令,我的问题是如何做到这一点? 下面的解决方案正确吗?是否存在任何陷阱? (死锁、UI 缓慢或

回答 7 投票 0

为什么向用户控件添加 x:Name 属性会导致编译错误?

我真的需要更多关于造成这种情况的想法,目前它让我陷入困境。 我有一个 Xaml 用户控件,其中包含另一个用户控件,如下所示: 我真的需要更多关于造成这种情况的想法,目前它让我陷入困境。 我有一个 Xaml 用户控件,其中包含另一个用户控件,如下所示: <UserControl x:Class="MyModule.View.MainView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:igDock="http://infragistics.com/DockManager" xmlns:views="clr-namespace:MyModule.View" > <StackPanel x:Name="panel"> <views:MyHeaderView/> <igDock:XamDockManager x:Name="dockingManager"/> </StackPanel> </UserControl> 这是在 Prism 模块内(因此是 MyModule 名称),但除此之外我不认为这有什么特别不寻常的地方。 现在,只要我向标题视图添加名称,代码就无法编译,例如 <views:MyHeaderView x:Name="header"/> 我得到的错误很简单: "The type name 'View' does not exist in the type MyModule.MyModule'" 我尝试将包含的用户控件移动到另一个命名空间中,创建一个空白用户控件并尝试使用它(相同的结果)并删除 XamDockManager,但似乎没有任何区别。 有人能解释一下吗? 我想我找到了答案。 如果我将模块类重命名为 MyModuleThingy,则它可以编译。似乎出现问题是因为模块类与包含它的命名空间具有相同的名称(MyModule.MyModule)。 如果有人能让我知道为什么这可能是一个问题,我很想知道。特别是因为我继承了很多代码,这似乎是 Prism 的特定实现中的常见模式。 问题是您有一个同名的类和命名空间。如果你有类似的东西: namespace MyModule { public class MyModule { } public class MyView { } public class MyControl { public void Foo() { MyModule.MyView v = ..; } } } v之前的类型会认为MyView是在MyModule类型中作为嵌套类型。它不会将 MyModule 解析为命名空间,因为该类型基于 C# 的类型解析规则而获胜。 背后生成的代码只是采用您在 xmlns 中定义的命名空间,并在创建支持字段时将其添加到前面(由于 x:Name 属性)。所以你最终得到 MyModule.View.MyHeaderView,其中 MyModule 被解释为类型,而不是命名空间。 我很不幸地把我的项目称为 TextEditor,显然这个名称与现有的 MS 类冲突。我尝试将 x.Name 或 Name 属性添加到对用户控件的引用时出现编译错误,抱怨编译器找不到我的用户控件。 显然它正在研究 MS 课程,而不是本地项目。 我将项目重命名为 TextEditorProject,必须使用 Grep 来查找所有出现的情况,但最终,我让它工作了。 你是否有一个名为“View”的类,与命名空间相同? WPF 不喜欢您使用 x:Name 作为程序集中定义的控件,假设 xmlns:views="clr-namespace:MyModule.View" 与您的程序集相同 用名字代替,就可以了

回答 5 投票 0

当将WindowStartuPlocation设置为Manual时,未设置或顶部和顶部。(在wpf棱镜库中)

设置弹出对话框样式如下所示。 <Setter Property="WindowStyle" Value="...</desc> <question vote="1"> <p>设置弹出对话框样式如下所示。</p> <pre><code>&lt;prism:Dialog.WindowStyle&gt; &lt;Style TargetType=&#34;{x:Type Window}&#34;&gt; &lt;Setter Property=&#34;WindowStyle&#34; Value=&#34;None&#34; /&gt; &lt;Setter Property=&#34;prism:Dialog.WindowStartupLocation&#34; Value=&#34;Manual&#34; /&gt; &lt;Setter Property=&#34;Left&#34; Value=&#34;0&#34;/&gt; &lt;Setter Property=&#34;Top&#34; Value=&#34;0&#34;/&gt; &lt;Setter Property=&#34;ResizeMode&#34; Value=&#34;NoResize&#34;/&gt; &lt;Setter Property=&#34;ShowInTaskbar&#34; Value=&#34;False&#34;/&gt; &lt;Setter Property=&#34;SizeToContent&#34; Value=&#34;WidthAndHeight&#34;/&gt; &lt;Setter Property=&#34;ShowActivated&#34; Value=&#34;False&#34;/&gt; &lt;/Style&gt; &lt;/prism:Dialog.WindowStyle&gt; &lt;Grid&gt; &lt;Button/&gt; &lt;/Grid&gt; </code></pre> <p>但是,如果显示对话框,它会弹出到所有者中心位置。 我该如何解决这个问题?</p> <p>我在onDialogopened事件中强行输入了Left和Top属性,但是没有作用,因为还是弹窗。 当按下另一个按钮时,我确认它在设置“Left”和“Top”时起作用,但我想要的是在弹出时立即在设置为“Manual”的位置弹出。</p> </question> <answer tick="false" vote="0"> <p>请不要使用默认的 Prism 对话框窗口,而是注册并使用自定义对话框窗口。</p> <pre><code> &lt;Window x:Class=&#34;MyDialog.Views.CustomDialogWindow&#34; xmlns=&#34;http://schemas.microsoft.com/winfx/2006/xaml/presentation&#34; xmlns:x=&#34;http://schemas.microsoft.com/winfx/2006/xaml&#34; xmlns:prism=&#34;http://prismlibrary.com/&#34; prism:ViewModelLocator.AutoWireViewModel=&#34;True&#34;&gt; &lt;Grid&gt; &lt;/Grid&gt; &lt;/Window&gt; </code></pre> <p>xaml</p> <pre><code>namespace MyDialog.Views { public partial class CustomDialogWindow : Window, IDialogWindow { public CustomDialogWindow() { InitializeComponent(); } public IDialogResult Result { get; set; } } } </code></pre> <p>xaml.cs</p> <pre><code>namespace MyDialog.ViewModels { public class CustomDialogWindowViewModel : BindableBase, IDialogAware { public string Title =&gt; throw new NotImplementedException(); public event Action&lt;IDialogResult&gt; RequestClose; public CustomDialogWindowViewModel() { } public bool CanCloseDialog() { return true; } public void OnDialogClosed() { } public void OnDialogOpened(IDialogParameters parameters) { } protected void RaiseRequestClose(IDialogResult dialogResult) { RequestClose?.Invoke(dialogResult); } private DelegateCommand _closeDialogCommand; public DelegateCommand CloseDialogCommand =&gt; _closeDialogCommand ?? (_closeDialogCommand = new DelegateCommand(ExecuteCloseDialogCommand)); void ExecuteCloseDialogCommand() { RaiseRequestClose(new DialogResult(ButtonResult.OK)); } } } </code></pre> <p>视图模型</p> <pre><code>public void RegisterTypes(IContainerRegistry containerRegistry) { containerRegistry.RegisterDialog&lt;MyDialogView, MyDialogViewModel&gt;(); containerRegistry.RegisterDialogWindow&lt;CustomDialogWindow&gt;(); } </code></pre> <p>注册窗口和对话框视图然后使用</p> <pre><code> _dialogService.Show(&#34;MyDialogView&#34;, new DialogParameters(), r =&gt;(){ }); </code></pre> </answer> </body></html>

回答 0 投票 0

Serilog 与 Prism 8 一起使用并注入 Microsoft.Extensions.Logging.ILogger

结合使用 .Net 5 WPF、Serilog 和 PrismLibrary 8 有人可以指导我正确的方向,以便我可以将 Microsoft.Extensions.Logging.ILogger 注入 ViewModels 等。 我发现了很多

回答 2 投票 0

动态生成的DataGrid第二次单击CheckBox在WPF中不起作用

问题 1:我在动态生成的 DataGrid 中双击时遇到了众所周知的问题。我的第一列带有复选框。需要单击两次才能进行选择/取消选择。 为了...

回答 2 投票 0

如何让硬件后退按钮在 Prism Maui 上正常工作

我正在尝试让 Android 硬件后退按钮在 prism Maui 应用程序上工作。这似乎已经成为一个问题有一段时间了,而且可能仍然是一个问题。 (如果...请纠正我

回答 1 投票 0

Prism-WPF 相当于 Silverlight 的:CompositionInitializer 类和 SatisfyImports()

我正在使用 Prism-MEF-WPF,有时我需要从 XAML 构建视图模型 视图的,所以容器不参与,无法进行依赖注入 自动(因为那里...

回答 3 投票 0

Maui Prism .CreateWindow() 导航错误

我正在努力将 Xamarin.Forms 应用程序迁移到毛伊岛。在 MauiProgram 中,我们在 PrismAppBuilder 上调用 MauiAppBuilder.UsePrism(),我们调用 .RegisterTypes() 来注册服务和导航页面...

回答 1 投票 0

UTF-8 文本从父框架中弹出

我对前端有点陌生。 最近,我使用基于 Next.js、tailwind 和 React 的模板创建了博客。 当我输入 UTF-8 文本(韩语)时,文本从移动设备上的父框架中弹出。 可以...

回答 1 投票 0

Prism 的 INavigationParameters 的本地毛伊岛等效项?

所以目前正在努力将我们的移动应用程序从 xamarin 重构为 maui。在xamarin应用程序中,我们使用prism进行导航,但我们想停止使用prism。对于导航,我们遵循 Max Borrmanns

回答 1 投票 0

注销并返回 Prism 应用程序中的登录屏幕

我有一个登录序列在基于 prism 的 WPF 应用程序中工作,该应用程序在显示主窗口之前显示登录屏幕。在我的 Bootstrapper 类中,InitializeShell 方法如下所示 ...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.