小编Rob*_*erd的帖子

WPF事件绑定到ViewModel(对于非Command类)

我正在使用应用程序的第二个版本,作为重写的一部分,我必须转向MVVM架构.我正面临压力,要在视图模型类中放置绝对的所有代码 - 在代码隐藏文件中使用c#是不受欢迎的.(我知道,我知道......我知道背后的代码不是坏事,但这次不是我的电话).

对于实现命令界面的对象,这很容易.我已经能够找到大量关于如何将这些对象的Command绑定到视图模型中的ICommand的信息.问题是没有这种接口的对象,例如

<ListBox
   x:Name="myListBox"
   MouseDoubleClick="myCallbackFunction">

<!-- ... -->

</ListBox>
Run Code Online (Sandbox Code Playgroud)

我想知道如何将Listbox的MouseDoubleClick事件绑定到myCallbackFunction,这是在视图模型中实现的.这甚至可能吗?

谢谢!

c# xaml binding mvvm viewmodel

19
推荐指数
2
解决办法
4万
查看次数

WPF数据绑定架构问题

我正在尝试学习如何使用WPF绑定和MVVM架构.我在Dependency Properties遇到了一些麻烦.我试图通过将它绑定到DataContext中的DependencyProperty来控制视图上项目的可见性,但它不起作用.无论我GridVisible在下面的视图模型的构造函数中设置值,它在运行代码时始终显示为可见.

谁能看到我哪里出错了?

C#代码(ViewModel):

public class MyViewModel : DependencyObject
{
    public MyViewModel ()
    {
        GridVisible = false;
    }

    public static readonly DependencyProperty GridVisibleProperty =
    DependencyProperty.Register(
        "GridVisible",
        typeof(bool),
        typeof(MyViewModel),
        new PropertyMetadata(false,
                new PropertyChangedCallback(GridVisibleChangedCallback)));

    public bool GridVisible
    {
        get { return (bool)GetValue(GridVisibleProperty); }
        set { SetValue(GridVisibleProperty, value); }
    }

    protected static void GridVisibleChangedCallback(
        DependencyObject source,
        DependencyPropertyChangedEventArgs e)
    {
        // Do other stuff in response to the data change.
    }
}
Run Code Online (Sandbox Code Playgroud)

XAML代码(查看):

<UserControl ... >

    <UserControl.Resources>
        <BooleanToVisibilityConverter x:Key="BoolToVisConverter" /> …
Run Code Online (Sandbox Code Playgroud)

c# wpf datacontext xaml dependency-properties

5
推荐指数
1
解决办法
342
查看次数

使用用户输入的密码进行Python单元测试

我正在尝试对访问远程服务的python代码进行单元测试。我在python 2.7中使用PyUnit。

在该setUpClass方法中,代码提示用户输入服务的密码。我想使所有模块保持模块化,因此我为每个要测试的类创建了单独的单元测试类。这些类都访问相同的远程服务,并且都使用setUpClass超类的方法的单个定义。

我的问题是我必须多次重新输入密码(每个测试类一次)。我很懒。我只想为所有单元测试输入一次密码。我可以通过在单元测试中对密码进行硬编码来避免此问题,但这是一个糟糕的主意。另一种选择是将所有内容都推入一个派生自的庞大类中unittest.TestCase,但由于我喜欢模块化,因此我想避免使用这条路线。

代码的结构如下:

import unittest
from getpass import getpass

class TestCommon(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        pwd = getpass()

class test_A(TestCommon):
    # ...individual unit tests for class A

class test_B(TestCommon):
    # ...individual unit tests for class B
Run Code Online (Sandbox Code Playgroud)

在此示例中,我将不得不输入两次密码:一次输入class A,一次输入class B

是否有人建议我在单元测试运行开始时就一次性输入一次安全密码?谢谢!

python unit-testing python-2.7 python-unittest

5
推荐指数
1
解决办法
1849
查看次数

转译时排除 *.spec.ts 文件但仍然正确地整理它们

如何从被转译中排除打字稿文件,但仍确保它们与 Atom 编辑器中的 linter 一起正常工作?

我在我的*.spec.ts文件中收到此错误:

ES5/ES3 中的异步函数或方法需要“Promise”构造函数。确保您有“Promise”构造函数的声明或在您的--lib选项中包含“ES2015” 。

出现问题是因为我明确排除了包含所有测试文件的目录(请参阅下面的 tsconfig 文件),因为我不希望在构建项目时将这些文件转换为 JavaScript。但是,当我在 Atom 编辑器中查看它们时,我确实希望 tslint 插件正确地对这些文件进行检查。

我的设置:

  • 带有插件的 Atom.io 1.30:
    • 原子打字稿 12.6.3
    • 语言打字稿 0.4.0
    • linter-tslint 1.9.1
  • tslint 5.9.1
  • 打字稿 3.0.1

我的tsconfig.json文件:

{
  "compileOnSave": false,
  "compilerOptions": {
    "allowUnreachableCode": false,
    "allowUnusedLabels": false,
    "baseUrl": ".",
    "declaration": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "inlineSourceMap": true,
    "inlineSources": true,
    "lib": [
      "es2017",
      "dom"
    ],
    "moduleResolution": "node",
    "newLine": "lf",
    "noImplicitReturns": true,
    "noImplicitThis": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "outDir": "./dist",
    "target": "es5", …
Run Code Online (Sandbox Code Playgroud)

typescript tsconfig atom-editor tslint

5
推荐指数
1
解决办法
1973
查看次数

组合SQL Union查询行

我正在尝试执行一个SQL查询,该查询生成一个表,其中两列引用相同的数据但使用不同的条件.我的结果查询需要包含以下列:

查询结果:

  • 总数(量
  • 可用数量

其中总数量是某个项目的总数,可用是同一项目的子集,但只有那些标记为"可用"的项目.

我试图使用以下形式的UNION:

SELECT
   '0' as Quantity,
   COUNT (item.pkid) as Available
FROM itemInstance, itemType
WHERE
   itemInstance.availability = 'AVAILABLE'
   AND itemInstance.type = itemType.primary_key
UNION
SELECT
   COUNT (DISTINCT item.pkid) as Quantity,
   '0' as Available
FROM itemInstance, itemType
WHERE itemInstance.type = itemType.primary_key
Run Code Online (Sandbox Code Playgroud)

这当然会产生类似的东西:

  Quantity  Available
1    0          2
2    4          0
3    0          3
4    7          0
Run Code Online (Sandbox Code Playgroud)

当我真的想要:

  Quantity  Available
1    4          2
2    7          3
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.谢谢!

sql

2
推荐指数
1
解决办法
3031
查看次数