我正在使用应用程序的第二个版本,作为重写的一部分,我必须转向MVVM架构.我正面临压力,要在视图模型类中放置绝对的所有代码 - 在代码隐藏文件中使用c#是不受欢迎的.(我知道,我知道......我知道背后的代码不是坏事,但这次不是我的电话).
对于实现命令界面的对象,这很容易.我已经能够找到大量关于如何将这些对象的Command绑定到视图模型中的ICommand的信息.问题是没有这种接口的对象,例如
<ListBox
x:Name="myListBox"
MouseDoubleClick="myCallbackFunction">
<!-- ... -->
</ListBox>
Run Code Online (Sandbox Code Playgroud)
我想知道如何将Listbox的MouseDoubleClick事件绑定到myCallbackFunction,这是在视图模型中实现的.这甚至可能吗?
谢谢!
我正在尝试学习如何使用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) 我正在尝试对访问远程服务的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。
是否有人建议我在单元测试运行开始时就一次性输入一次安全密码?谢谢!
如何从被转译中排除打字稿文件,但仍确保它们与 Atom 编辑器中的 linter 一起正常工作?
我在我的*.spec.ts文件中收到此错误:
ES5/ES3 中的异步函数或方法需要“Promise”构造函数。确保您有“Promise”构造函数的声明或在您的
--lib选项中包含“ES2015” 。
出现问题是因为我明确排除了包含所有测试文件的目录(请参阅下面的 tsconfig 文件),因为我不希望在构建项目时将这些文件转换为 JavaScript。但是,当我在 Atom 编辑器中查看它们时,我确实希望 tslint 插件正确地对这些文件进行检查。
我的设置:
我的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) 我正在尝试执行一个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)
任何帮助,将不胜感激.谢谢!
c# ×2
xaml ×2
atom-editor ×1
binding ×1
datacontext ×1
mvvm ×1
python ×1
python-2.7 ×1
sql ×1
tsconfig ×1
tslint ×1
typescript ×1
unit-testing ×1
viewmodel ×1
wpf ×1