Tag: mvvm light

MVVM符合WPF应用程序中的本地化

如何使用MVVM模式本地化WPF应用程序? 我真的想以“正确”的方式做到这一点。 我目前的方法是使用.resx资源文件来本地化我的应用程序。 我把它们包含在我的xaml代码中 xmlns:localization=”clr-namespace:ClientLibTestTool.ViewLanguages” 并像这样访问它们: 我的问题: 有没有更好的方法呢? 如何测试不同的语言(使用不同的语言设置加载应用程序)? 是否可以在运行时更改语言? 回答: 问题1: 问题2 :(谢谢,stijn) public MainWindow() { // Debug Settings localization.Culture = CultureInfo.GetCultureInfo(“en-US”); // localization.Culture = CultureInfo.GetCultureInfo(“de-DE”); this.InitializeComponent(); } 问题3 :(谢谢你,stijn) 不是真的,有必要重绘完整的窗口。

WPF缩放canvas中心鼠标位置

使用“左”和“顶”点固定参考点以缩放“canvas”。 我想放大并缩小鼠标指针。 如何将其纳入MVVM模式? (不在代码后面)。 使用鼠标滚轮,我可以放大canvas。 我已经使用了RenderTransformOrigin,CenterX,CenterY,但它没有用。 我想我采取了错误的做法。 请帮我..

MVVM指示灯:将对象从视图传递到viewmodel

我最近开始使用MVVM灯使用WPF,我有以下(简单场景)。 MainWindow包含元素列表框。 选择一个并单击该按钮后,我将触发一个命令: ReservoirViewerCommand.Execute(null); 在viewmodel类上,我实例化该命令并发送带有所选对象的消息: ReservoirViewerCommand = new RelayCommand(OpenReservoir); private void OpenReservoir() { Messenger.Default.Send(new LaunchShowReservoirMessage(){Reservoir=SelectedReservoir}); } 哪里: class LaunchShowReservoirMessage:MessageBase { public Reservoir Reservoir { get; set; } } 主视图注册消息并打开一个新的子窗口: private void RegisterMessages() { Messenger.Default.Register(this,OnLaunchShowReservoir); } public void OnLaunchShowReservoir(LaunchShowReservoirMessage msg) { var showReservoir = new ReservoirViewerView(); showReservoir.Show(); } 我需要的是新的ViewModel(ReservoirViewerViewModel)可以通过消息以某种方式获取传递的对象,以便我可以在子窗口上显示该对象的详细信息。 我做了一些逐步调试,似乎永远无法访问ViewModel构造函数。

来自lambda的RelayCommand和构造函数参数

如果在XAML文件中,我将Button从以下类绑定到“Command”,则单击Button不会导致执行DoIt: class Thing() { public Thing(Foo p1) { Command = new RelayCommand(() => DoIt(p1)); } private DoIt(Foo p) { p.DoSomething(); } public ICommand Command { get; private set; } } 但是,如果我从p1初始化一个字段并将该字段作为参数传递给lambda中的方法调用,它确实有效: class Thing() { private Foo field; public Thing(Foo p1) { field = p1; Command = new RelayCommand(() => DoIt(field)); } private DoIt(Foo p) { […]

RelayCommand在一段时间后停止工作

我使用GalaSoft的RelayCommand遇到了一些问题。 我有一个可以工作的NextCommand属性,但只有几次。 之后,它完全停止工作。 您可以使用示例项目尝试此操作: http://s000.tinyupload.com/?file_id=65828891881629261404 行为如下: NextCommand : 弹出所有项目直到活动索引 如果剩下少于50个项目,则推送1个新项目 将新项目标记为活动 BackCommand : 将活动索引向后移动1个位置 复制步骤: ‘+’(OemPlus)键已绑定到NextCommand ‘ – ‘(OemMinus)键已绑定到BackCommand 按住“+”键直到列表停止增长(限制50个项目) 按住“ – ”键,直到列表中的第一项处于活动状态 重复 所需的重复次数(复制错误)是不一致的。 有时我会在重复4次后得到它; 其他时间直到9。 // Items Collection public class ItemCollection : ViewModelBase { // List of Items private readonly ObservableCollection _items = new ObservableCollection(); public ObservableCollection Items { get { return _items; […]

MVVMLight UserControl视图模型 – 为每个视图创建新的用户控件实例

我有一个用户控制我在其他视图中使用的患者列表。 但是,当我选择其中一个患者时,选择将传播到包含用户控件实例的所有视图。 如何让每个视图为每个视图实例化一个用户控件的新实例? 我正在使用c#

WPF MVVMLight:基于另一个DataGrid的SelectedItem更新DataGrid

使用MVVMLight开发WPF应用程序。 我的Model由一个Attribute类和一个DataSet类组成,其中一个名为Attributes的ObservableCollection Attributes 。 我的MainViewModel有一个DataSet属性。 在我的MainView ,它的DataContext设置为MainViewModel我有两个DataGrids 。 一个有它的ItemsSource绑定到DataSet.Attributes工作正常: //some DataGrid columns here 我希望第二个DataGrid基于第一个DataGrid的SelectedItem显示一些其他属性,所以我做了以下内容: 1)在MainViewModel添加了Attribute类型的SelectedAttribute属性: private Attribute selectedAttribute; public Attribute SelectedAttribute { get { return selectedAttribute; } set { if (selectedAttribute == value) { return; } selectedAttribute = value; RaisePropertyChanged(() => SelectedAttribute); } } 2)修改了我的第一个DataGrid ,将其SelectedItem绑定到SelectedAttribute : 3) Update 1将第二个DataGrid的ItemsSource设置为SelectedAttribute并创建一个绑定到SelectedAttribute的Categories属性的列,它是ObservableCollection : 4)在我的MainViewModel ,一旦填充了DataSet.Attributes ,我将SelectedAttribute设置为集合中的第一个Attribute (就像测试一样): […]

MVVM Light“在缓存中找不到类型”

我正在尝试将我的Windows Phone 8 Silverlight应用程序转换为8.1手机应用程序,作为通用应用程序的一部分。 我不知道这是否相关,因为这是我第一次尝试正确实现视图模型。 我想在Windows和Windows Phone中的视图之间共享数据。 无论如何,这是我得到的错误。 Error 3 Type not found in cache: ScoreAlerts.ViewModel.FixturesViewModel. C:\Users\Dave\Documents\Visual Studio 2012\Projects\Score Alerts\ScoreAlerts\ScoreAlerts.WindowsPhone\Pages\Fixtures.xaml 9 5 ScoreAlerts.WindowsPhone Error 4 Type not found in cache: ScoreAlerts.ViewModel.HomePageViewModel. C:\Users\Dave\Documents\Visual Studio 2012\Projects\Score Alerts\ScoreAlerts\ScoreAlerts.Shared\Pages\HomePage.xaml 34 9 ScoreAlerts.WindowsPhone 这就是我的视图模型定位器的外观 public class ViewModelLocator { /// /// Initializes a new instance of the ViewModelLocator class. /// public […]

如何在视图中切换视图?

我正在制作一个使用MVVM光框架的WPF应用程序。 我要做的是在视图中有一个登录表单,当用户按下该视图中的按钮时,它会为附加的ViewModel启动LoginCommand。 从那里我想要启动一个新窗口来保存应用程序的其余部分,或者只是从同一个窗口切换视图。 目前我有它,所以有一个名为MainView的视图,其内部控件内部绑定到View1。 但是,要切换到View2,我需要在MainView上放置此按钮,而不是在它所属的View1中。 任何建议?

使用参数在MVVM Light中打开一个新窗口的最佳实践

我对mvvm和mvvm light相当新,但我想我理解它的一般概念。 我不明白的是,如果我想打开一个新窗口,但该窗口需要来自调用者的数据将这些数据传递到新窗口的最佳做法是什么? 如果我将数据传递给构造函数,那么这意味着我需要在后面的代码中将代码传递给视图模型。 我不能使用消息传递,因为它不是基本数据。 提前致谢。