Tag: wpf

input按键事件处理程序

input密钥时,我想从文本框中捕获文本。 我正在使用WPF / Visual Studio 2010 / .NET 4.我不知道在标签中使用什么事件处理程序? 我也想为maskedtextbox做同样的事情。

加载图像时,WPF抛出“找不到资源”exception

我有一个WPF窗口,在我的本地系统中有一个文件的背景图像。 所以XAML文件如下所示: <Window.Background> <ImageBrush ImageSource="/MYASSEMBLY;component/Resources/MyPic.png"/> </Window.Background> 在XAMLdevise器中,它实际上显示了这个背景图像,所以图像确实存在于MYASSEMBLY \ Resources文件夹中。 但是,在启动应用程序时,在InitializeComponent()函数调用中,会引发exception 找不到资源'resources / mypic.png'。 所以我现在完全失去了。 devise和运行时间的目录是否不同,因此运行时不存在?

WPF MVVMcomboboxSelectedItem或SelectedValue无法正常工作

更新 经过一番调查。 什么似乎是问题是SelectedValue / SelectedItem发生在项目源完成加载之前。 如果我坐在一个rest点,等待几秒钟,按预期工作。 不知道我怎么去解决这个问题。 结束更新 我有一个应用程序在WPF中使用MVVM与ComboBox。 以下是ViewModel示例。 我遇到的问题是当我们离开我们的页面并迁移回ComboBox不select当前选定的值。 查看模型 public class MyViewModel { private MyObject _selectedObject; private Collection<Object2> _objects; private IModel _model; public MyViewModel(IModel model) { _model = model; _objects = _model.GetObjects(); } public Collection<MyObject> Objects { get { return _objects; } private set { _objects = value; } } public MyObject […]

鼠标结束时更改button的颜色

当IsMouseOver == True时,我想改变一个button的背景颜色 <Button Command="{Binding ClickRectangleColorCommand}" Background="{Binding Color ,Converter={StaticResource RGBCtoBrushColorsConverter},Mode=TwoWay}" Width="auto" Height="40"> <TextBlock Foreground="Black" Text="{Binding Color, Converter={StaticResource RGBCColorToTextConveter},Mode=TwoWay}"/> <Button.Style> <Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="DarkGoldenrod"/> </Trigger> </Style.Triggers> </Style> </Button.Style> </Button> 我似乎无法理解为什么这个触发器不工作。

读数据集

一个绝对的初学者的问题:我如何从WPF中的数据集读取数据? 我有一个只有2列的列车时刻表,我希望能够读取出发时间,并计算下一class列车何时离开。 例如,现在的时间是12:29,我的申请应该告诉我下一class列车将在12:33出发。 我已经search了左右。 我在.NET 3.5上。 谢谢

WPF中checkbox左侧的文本?

将checkbox内容(文本)置于checkbox本身左侧的最简单方法是什么?

WPF使用MVVM模式浏览视图

我正在使用MVVM模式构build我的第一个WPF。 在这个社区的帮助下,我设法创build了我的模型,我的第一个ViewModel和视图。 现在我想为应用程序devise基本的应用程序布局界面增加一些复杂性。 我的想法是至less有两个子视图和一个主视图,并将它们分开放在几个XAML上: Main.XAML Products.XAML Clients.XAML Main将有一个菜单和一个空间来加载子视图(产品和客户端)。 现在,遵循MVVM模式,视图之间的所有导航逻辑应该被写在ViewModel上。 所以mi想法是有4个ViewModels: MainViewModel ProductsViewModel ClientsViewModel NavigationViewModel 那么NavigationViewModel应该包含一系列的子视图模型? 一个活跃的视图模型是可行的? 所以我的问题是: 1)如何使用MVVM模式在主视图中加载不同的视图(产品,客户端)? 2)我如何实现导航视图模型 3)如何控制打开或活动视图的最大数量? 4)如何在打开的视图之间切换? 我一直在做大量的search和阅读,找不到任何简单的MVVM导航WPF导航,在主视图中加载多个视图的例子。 其中许多是: 1)使用外部工具包,我现在不想使用。 2)将创build所有视图的所有代码放在一个单独的XAML文件中,这似乎不是一个好主意,因为我需要实现近80个视图! 我在这里的道路上? 任何帮助,特别是一些代码将被折衷。 谢谢! UPDATE 所以,我build立了一个@LordTakkera的build议,但卡住了testing项目。 这是我的解决scheme的样子: 我创造: 两种模式(客户和产品) 一个MainWindow和两个wpf用户控件(客户和产品)XAML。 三个ViewModel(客户,产品和主ViewModel) 然后我把每个视图上的dataContext设置为相应的viewModel。 之后,我使用ContentPresenter创buildMainWindow,并将其绑定到viewmodel的属性。 MainWindow.XAML <Window x:Class="PruevaMVVMNavNew.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="519" Width="890"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="150"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="80"/> […]

MVVM违反干吗?

看来,我做的ViewModels 像其他类似的可疑 ,他们似乎需要大量的代码重复,例如在我有一个当前的项目: SmartForm :表示要填写的数据表单的模型 ,具有以下属性: IDCODE 标题 描述 SmartFormFields的集合 等等 SmartFormControlView 视图 SmartFormControlViewModel ViewModel IDCODE 标题 描述 SmartFormFields的集合 等等 所以我的ViewModel基本上和我的Model一样 ,只是用了所有的OnPropertyChangedfunction来绑定View。 看来,我重构和扩展了这一点,我对我的模型做的每一个小的改变,我必须做一个 镜像改变的ViewModel 。 这似乎违反了模式的基本规则不要重复自己 。 我是不是正确地实现了MVVM模式,还是MVVM的一个固有特性,那就是Model和ViewModel之间总会有一对一的重复?

在WPFvalidation中ValidatesOnNotifyDataErrors和ValidatesOnDataErrors和NotifyOnValidationError有什么区别?

在WPFvalidation中 ,以下是什么区别: ValidatesOnNotifyDataErrors = True ValidatesOnDataErrors = True NotifyOnValidationError = True 什么时候应该在XAML中正确使用这些属性?

打开文件对话框MVVM

好吧,我真的很想知道MVVM开发人员是如何处理WPF中的打开文件对话框的。 我真的不想在我的ViewModel(其中“浏览”通过DelegateCommand引用) void Browse(object param) { //Add code here OpenFileDialog d = new OpenFileDialog(); if (d.ShowDialog() == true) { //Do stuff } } 因为我认为这违背了MVVM方法。 我该怎么办?