问题标签 [cinch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1004 浏览

wpf - MVVM 和有状态命令 - 好主意还是坏主意?

我想我会在这里发帖,希望也许有 MVVM 专业知识的人能够就以下是否是一个好主意提供意见:

我正在使用 Sacha Barber 的 Cinch MVVM 框架,其中包括 Marlon Grech 的 SimpleCommand 类。

这个类没有其他替代品的一个属性是 Text 属性,它通常可用于将 UI 元素绑定到命令操作的“标题”。因此,我一直在为这个类编写一个扩展,它公开了一个 Text 属性。

现在,我遇到的是一个用例,我使用命令来切换与设备的连接。有很多不同的方法可以实现这个(并不总是存在 - 它是软件!)。一种方法是从我的 ViewModel 中公开多个命令对象——一个用于“断开连接”,一个用于“连接”;让视图模型公开一个指示连接状态 (IsConnected) 的属性,并让视图有条件地绑定到 Connect 命令或 Disconnect 命令。不过,我对这个选项的反应是……糟糕!

我最初开始关注的不仅是提供一个 Text 属性,而且还让命令对象实现 INotifyPropertyChanged ,以便视图模型可以根据系统状态将文本属性动态更改为“连接”或“断开连接”。这样做,我可以避免使用多个命令,而只公开一个“ToggleConnection”命令对象。

不过,从这条路开始,我突然想到,这种模式可能还有其他变体,因此 UI 需要根据命令状态进行更改。例如,除了根据连接状态更改命令的文本之外,您可能还有一些地方需要根据连接状态更改图标。因此,我开始编写一个实现 INotifyPropertyChanged 的​​“有状态”类,并公开两个属性——“文本”和“状态”。我已将类设为通用类,以便用户可以定义 State 的类型(我通常不喜欢在可避免的情况下使用“对象”)。

我的问题是......你认为这是一个好主意还是坏主意?它可能与命令的初衷/设计有所不同;从我所看到的情况来看,一般来说,命令对象可能是无状态的,因为它们是系统的“动词”。使用路由命令,如果我理解正确,通常只期望命令的目标具有状态。特别是因为可以根据声明命令绑定的位置将相同的命令路由到不同的处理程序。

所以,我认为至少对于路由命令,状态是没有意义的。

但是,我不是在处理路由命令——我是在专门处理 MVVM 命令。在这种情况下,基本上没有命令的条件路由 - MVVM 视图直接绑定到特定视图模型的命令对象,它是执行和可以执行的处理程序。

在这种情况下,这有意义吗?

我已附上相关代码的副本,以防它有用/感兴趣。

谢谢,菲尔

0 投票
2 回答
3255 浏览

xaml - 让 Unity 解析 XAML 中的视图

我从 MVVM 开始,我开始理解事物。我目前正在尝试使用 Cinch 框架,尽管我还没有致力于它。
我通过在视图的代码隐藏中引用 ViewModel 将 ViewModels 注入到 Views 中,属性上有一个 [Dependency],并在 setter 中使用 Unity 将 DataContext 设置为正确的视图。巧妙的把戏,我想。

我试图让我的应用程序作为单个窗口工作,并注入视图(与多个窗口相反并处理打开\关闭它们)我将视图从 Windows 更改为 UserControls,并在主窗口中添加了一个。这行得通,但从未注入 ViewModel,大概是因为 XAML 不使用 Container.Resolve 创建视图,因为当我创建视图并使用 Resolve 在代码隐藏中手动添加时,创建了 [Dependency] .

如何设置我的窗口,以便如果我通过 XAML 添加视图,或者视图由于 UI 操作等而更改,它通过 Unity 获取它,以便它可以发挥它的魔力?

0 投票
6 回答
11094 浏览

wpf - 鼠标绑定鼠标滚轮以放大 WPF 和 MVVM

好的,我已经知道如何使用 LayoutTransform 和 ScaleTransform 来缩放 UI 元素网格。我不明白的是如何让我的视图响应 CTRL+MouseWheelUp\Down 来做到这一点,以及如何使代码适合 MVVM 模式。

我的第一个想法是将 ZoomFactor 存储为一个属性,并绑定到一个命令来调整它。

我在看类似的东西:

但我看到两个问题:

1)我认为没有办法判断轮子是向上还是向下移动,我也看不出如何确定多少。我见过 MouseWheelEventArgs.Delta,但不知道如何获得它。

2)绑定到视图模型上的命令似乎不正确,因为它严格来说是一个视图。

由于缩放严格来说只是 UI 视图,我认为实际代码应该放在代码隐藏中。

你们将如何实现这一点?

ps,我正在使用 .net\wpf 4.0,将 Cinch 用于 MVVM。

0 投票
3 回答
1027 浏览

c# - 图书馆或自己的框架?

什么时候应该使用库或框架而不是自己的实现。例如。MVVM,我应该使用 Cinch/MVVM 框架还是自己编写代码?

0 投票
1 回答
893 浏览

wpf - 将视图注入容器 MVVM WPF

这让我痛苦了一段时间。

我知道 Prism 将视图注入到区域中,但是有没有办法在视图优先的基础上对 Cinch 做类似的事情?例如,我有一个容器(实际上是一个区域),它可以在运行时包含任何视图——我不想在 XAML 中显式设置视图,因为这会加载它,而且有点混乱。有没有我可以用来做这个的容器?我该怎么做呢?(不必特定于 Cinch ..)

谢谢。

0 投票
1 回答
248 浏览

wpf - WPF 使用 CINCH SelectedItem COMBOBOX

我正在使用 cinch 框架 v1。我已经公开了一个公共属性( CurrentSuppier )并将该属性绑定到我的组合框的选定项.. 更新后,组合框显示不会更改为供应商的当前值.. 下面是一些代码片段..

XAML 代码:

我尝试将 CurrentSupplier 绑定到 TextBox 只是为了查看绑定是否有效 .. 确实有效 .. 文本框会使用我的 CurrentSupplier 属性的当前值进行更新 .. 但它不适用于组合框 ..

0 投票
1 回答
554 浏览

wpf - 用于关闭视图的 ViewModel 命令的 Cinch 版本

不想给 sacha 带来太多麻烦,有谁知道 Cinch V2 从 ViewModel 命令关闭视图的方式是什么?

以前我在 ViewModel 基础中使用了 RelayCommand 来接受 Escape 键绑定命令操作,并在后面的 View 代码中连接了一个 RequestClose 事件来执行此操作。

0 投票
1 回答
226 浏览

ruby - 如何在 Ruby 中为 IRCbot 实现登录/管理系统?

这一直困扰着我一段时间。我有我运行的这个 ircbot,并且我有一些命令需要对除我自己以外的所有用户(以及其他几台计算机/用户)进行锁定。

以前,我有它,所以它会在数据库中存储一个昵称列表,允许访问仅限管理员的功能,但是这被证明是不安全的,因为如果我断开连接并访问这些功能,任何用户都可以使用我的昵称。

我正在考虑的一种方法是创建一个模块,其中包含处理“登录”和“注销”功能(以及存储登录昵称)的方法,尽管这也可能很麻烦。(请参阅刻痕更改问题。)

拥有“仅限管理员”功能的稳健且安全的方式是什么?假设我目前没有办法使用 DCC。

0 投票
0 回答
143 浏览

wpf - 如何在 CINCH V2 中正确扩展 WPFService?

我是 MVVM 新手,我正在尝试使用 Sacha Barber 的 CINCH v2 MVVM 框架,我对如何以正确的方式扩展其中一个框架服务有疑问,我希望我能从你的经验中得到一些建议。

我正在使用 MVVM 编写 WPF 应用程序。我决定尝试 CINCH v2 作为我的框架。在我看来,我需要打开一个文件对话框并允许选择多个文件。CINCH 有一些不错的 UI 服务,其中包括实现 IOpenFileService 接口的 OpenFileService。我的问题是这个服务一次只打开一个文件,我需要允许多个打开多个文件。它就像使用 Microsoft.Win32.Openfiledialog 类中的 Multiselect 属性一样简单。

所以我在我的项目中添加了一个新接口,它实现了Cinch的IOpenFileService并对其进行了扩展,希望我能够使用框架提供的测试服务

然后我在我的项目中创建了一个服务,它实现了这个新接口并添加了扩展功能。

该解决方案有效,但我对它的正确性有一些疑问:

1.- 在我的界面项目中,我需要参考 Cinch 库。我不确定这是否有问题,但我觉得很奇怪

2.-这是解决这个问题的正确方法还是有其他方法?

谢谢你的建议。

0 投票
1 回答
349 浏览

c# - 使用 MEFedMVVM 获取 ViewModel 数据

我目前正在使用 MEFedMVVM 框架来访问 ViewModel,并想知道如何从当前正在使用的另一个 ViewModel 获取数据。这与 Cinch 的使用相结合。

目前我的标签控件定义如下:

加载视图后,我的主窗口 ViewModel 将按以下方式设置:

MainWindow ViewModel 继承 ViewModelBase 类,其配置如下(Cinch 类):

现在我想要做的是,从 loginWorkspace 中的一个按钮单击,它是一个带有 ViewModel 的 UserControl,将 Admin 选项卡从 LoginViewModel 添加到 MainWindow 的 Views ObservableCollection。