Questions tagged «wpf»

Windows Presentation Foundation或WPF是用于在基于Windows的应用程序中呈现用户界面的子系统。

26
ViewModel应该如何关闭表单?
我正在尝试学习WPF和MVVM问题,但是遇到了麻烦。这个问题与这个问题相似(但不完全相同)。 我有一个使用MVVM模式编写的“登录”表单。 此表单具有一个ViewModel,其中包含用户名和密码,这些用户名和密码使用常规数据绑定绑定到XAML中的视图。它还具有一个“登录”命令,该命令绑定到表单上的“登录”按钮,使用常规数据绑定绑定。 当“ Login”命令触发时,它将调用ViewModel中的一个函数,该函数将关闭并通过网络发送数据以进行登录。完成此函数后,将执行2个操作: 登录名无效-我们只显示一个MessageBox,一切正常 登录名有效,我们需要关闭“登录名”表单,并让它返回true,因为它是DialogResult... 问题是,ViewModel对实际视图一无所知,那么如何关闭视图并告诉它返回特定的DialogResult?我可以在CodeBehind中粘贴一些代码,和/或将View传递给ViewModel,但这似乎将完全击败MVVM的整个方面。 更新资料 最后,我只是违反了MVVM模式的“纯度”,并让View发布了一个Closed事件,并公开了一个Close方法。然后,ViewModel将仅调用view.Close。该视图仅通过接口已知,并通过IOC容器连接,因此不会丢失可测试性或可维护性。 接受的答案是-5票,似乎很愚蠢!虽然我很清楚通过“纯粹”解决问题会带来的良好感觉,但我当然不是唯一认为200行事件,命令和行为只是为了避免使用一种方法的人。 “模式”和“纯度”的名称有点荒谬。
247 c#  wpf  mvvm 

6
ResourceDictionary在单独的程序集中
我有要在多个单独的应用程序中使用的资源字典文件(MenuTemplate.xaml,ButtonTemplate.xaml等)。我可以将它们添加到应用程序的程序集中,但是最好将这些资源编译到一个程序集中,并让我的应用程序引用它,对吗? 构建资源程序集后,如何在我的应用程序的App.xaml中引用它?当前,我使用ResourceDictionary.MergedDictionaries合并单个词典文件。如果我将它们放在程序集中,如何在xaml中引用它们?

22
MVVM:教程从头到尾?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我是一位具有5年以上经验的C#/ Windows Forms程序员。我一直在研究使用MVVM(模型-视图-视图模型)设计模式的WPF。我在互联网上搜索了教程。我什至都看过杰森·多林格(Jason Dolinger)很棒的视频。尽管我找到了很多,但我还没有找到能使我自始至终的人。我真正想要的是一个没有任何WPF知识的教程。 您最喜欢WPF-MVVM的哪些教程可以帮助您学习?
243 c#  .net  wpf  mvvm 

6
在WPF应用程序中全局捕获异常?
我们有一个WPF应用程序,其中的某些部分可能会在运行时引发异常。我想全局捕获任何未处理的异常并将它们记录下来,但是否则继续执行程序,就好像什么都没发生一样(有点像VB的那样On Error Resume Next)。 这在C#中可能吗?如果是这样,我到底需要在哪里放置异常处理代码? 目前,我看不到任何可以包裹try/的点,catch并且可以捕获所有可能发生的异常。即使那样,我仍然会因为捕获而留下任何已执行的内容。还是我在这里以错误的方向思考? ETA:因为下面的许多人指出:该应用程序不是用于控制核电厂的。如果它崩溃了,那没什么大不了的,但是大多数与UI相关的随机异常在使用它的上下文中是很麻烦的。有(并且可能仍然有)其中的一些,因为它使用了插件架构,并且可能会被其他人扩展(在这种情况下也是学生;因此,没有经验的开发人员能够编写完全无错误的代码)。 至于捕获的异常:我确实将它们记录到日志文件中,包括完整的堆栈跟踪。这就是整个练习的重点。只是为了反驳那些从字面上把我比作VB的OERN的人。 我知道盲目地忽略某些错误类别是危险的,并且可能会损坏我的应用程序实例。如前所述,该程序对任何人都不是关键任务。在他们的正确思想中,没有人会相信人类文明的生存。它只是一个用于测试某些设计方法的小工具。软件工程。 为了立即使用该应用程序,异常不会发生很多事情: 没有异常处理-错误对话框和应用程序退出。必须重复实验,尽管可能要对另一个主题进行。尚未记录任何错误,这是不幸的。 通用异常处理–良性错误被捕获,没有造成危害。从我们在开发过程中看到的所有错误来看,这应该是常见的情况。忽略这种错误不会立即产生后果;核心数据结构已经过充分测试,因此很容易幸免。 通用异常处理–严重的错误被困,可能在以后崩溃。这可能很少发生。到目前为止,我们从未见过。无论如何,都会记录该错误,并且崩溃是不可避免的。因此,这在概念上与第一种情况相似。除了我们有堆栈跟踪。在大多数情况下,用户甚至不会注意到。 至于程序生成的实验数据:严重的错误在最坏的情况下只会导致不记录任何数据。细微的改变几乎不可能改变实验结果。即使在这种情况下,如果结果看起来可疑,也会记录错误;如果这是一个总体异常值,仍然可以丢弃该数据点。 总结一下:是的,我认为自己至少仍然是部分理智的人,并且我不认为会导致程序运行必定完全有害的全局异常处理例程。如前所述,取决于应用程序,这样的决定可能是有效的。在这种情况下,它被认为是一个有效的决定,而不是胡说八道。对于任何其他应用程序,该决定可能看起来有所不同。但是请不要指责我或从事该项目的其他人可能因为我们无视错误而震惊了整个世界。 旁注:该应用程序只有一个用户。并不是像Windows或Office那样被成千上万的人所使用,因为在这种情况下,首先让用户冒起泡沫的成本已经完全不同了。

20
数据绑定到WPF Treeview中的SelectedItem
如何检索WPF树视图中选择的项目?我想在XAML中这样做,因为我想绑定它。 您可能会认为它不存在SelectedItem,但显然不存在,它是只读的,因此无法使用。 这就是我想做的: <TreeView ItemsSource="{Binding Path=Model.Clusters}" ItemTemplate="{StaticResource ClusterTemplate}" SelectedItem="{Binding Path=Model.SelectedCluster}" /> 我想将绑定SelectedItem到模型上的属性。 但这给了我错误: “ SelectedItem”属性是只读的,无法通过标记设置。 编辑: 好的,这就是我解决这个问题的方法: <TreeView ItemsSource="{Binding Path=Model.Clusters}" ItemTemplate="{StaticResource HoofdCLusterTemplate}" SelectedItemChanged="TreeView_OnSelectedItemChanged" /> 并在我的xaml的codebehindfile中: private void TreeView_OnSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) { Model.SelectedCluster = (Cluster)e.NewValue; }
241 c#  wpf  mvvm  treeview  selecteditem 


4
ObservableCollection和BindingList之间的区别
我想知道和之间的区别ObservableCollection,BindingList因为我都曾用两者来通知Source中的任何添加/删除更改,但实际上我不知道何时比另一个更喜欢一个。 为什么我要选择以下一项? ObservableCollection<Employee> lstEmp = new ObservableCollection<Employee>(); 要么 BindingList<Employee> lstEmp = new BindingList<Employee>();

23
使用MVVM在WPF中处理对话框
在WPF的MVVM模式中,处理对话框是较复杂的操作之一。由于您的视图模型对视图一无所知,因此对话框通信可能会很有趣。我可以公开的是ICommand,当视图调用它时,会出现一个对话框。 有谁知道处理对话框结果的好方法?我说的是Windows对话框,例如MessageBox。 我们执行此操作的方法之一是在视图模型上有一个事件,当需要对话框时,视图将订阅该事件。 public event EventHandler<MyDeleteArgs> RequiresDeleteDialog; 可以,但是这意味着视图需要代码,而我想远离这些代码。

13
我应该使用哪种MVVM框架?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我正在使用MVVM模型开发应用程序,但是到了需要选择要使用的框架的地步。 可能的选项包括: MVVM工具包 MVVM基础 WPF应用程序框架(WAF) 轻型MVVM 卡利本 肚带 棱镜 反应式UI 以您的经验,哪个更好?
233 wpf  mvvm  frameworks 

30
如何自动选择WPF TextBox中所有焦点的文本?
如果我SelectAll从GotFocus事件处理程序中调用,它将无法使用鼠标-释放鼠标后所选内容就会消失。 编辑:人们喜欢唐娜(Donnelle)的答案,我将尽力解释为什么我不喜欢被接受的答案。 它更复杂,而被接受的答案则以更简单的方式完成相同的事情。 接受答案的可用性更好。当您单击文本的中间部分时,释放鼠标时文本将不会被选中,从而使您可以立即开始编辑;如果仍然要选择全部,只需再次按下该按钮,这次就不会在选择时取消选择。按照Donelle的食谱,如果我单击文本中间的内容,则必须第二次单击才能进行编辑。如果单击文本中的某个地方而不是文本外部的某个地方,这很可能意味着我要开始编辑而不是覆盖所有内容。
232 .net  wpf  silverlight  textbox 

5
WPF中的简单(我认为)水平线?
创建一个相对简单的数据输入表单,只想用一条水平线(与HTML中的HR标签不同)分隔某些部分,该水平线会拉伸整个表单。 我已经试过了: <Line Stretch="Fill" Stroke="Black" X2="1"/> 由于父控件的宽度不是固定的,因此该行会导致窗口拉伸到屏幕的整个宽度。 是否有一种简单的方法可以执行此操作而不固定我的父控件/窗口的宽度?
228 wpf  xaml  wpf-controls 



15
有什么办法可以使WPF文本块成为可选的?
我想使显示在Witty(一个开源Twitter客户端)中的文本成为可选择的。当前使用自定义文本块显示它。我需要使用TextBlock,因为我正在使用textblock的内联显示@username和链接并将其设置为超链接。一个常见的请求是能够复制粘贴文本。为此,我需要选择TextBlock。 我试图通过使用只读的TextBox来显示文本,使其看起来像文本块,从而使其正常工作,但是由于TextBox没有内联,因此在我的情况下这是行不通的。换句话说,我无法像使用TextBlock一样单独设置TextBox中文本的样式或格式。 有任何想法吗?
224 wpf  xaml  textbox  textblock 

4
窗口高度=“自动”无法正常工作
我想做的是显示一个没有明确指定高度/宽度的窗口(两个值均省略或设置为Auto)。我猜想该窗口会通过自动计算出其大小-计算所有包含的usercontrols大小,但这实际上不起作用! 取而代之的是,我得到一个大窗口,Actualwidth并且Actualheight值都设置为512(?!?!) 窗口声明: <Window x:Class="Window3" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window3" Height="Auto"> <StackPanel> <Label>Window</Label> </StackPanel> </Window> 通过以下方式将该窗口显示为对话框: Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button2.Click Dim dlg As New Window3 dlg.ShowDialog() End Sub 有解决方案吗?我不想显式设置窗口的大小,因为表单中的许多控件都将基于构造函数参数折叠起来,而尝试查找表单的实际大小将非常棘手(而且很丑陋)。
223 wpf 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.