我完全迷失在MVVM中使用的命令绑定中.我应该如何将我的对象绑定到窗口和/或它的命令控件来获取方法Button
Click
?
这是一CustomerViewModel
堂课:
public class CustomerViewModel : ViewModelBase
{
RelayCommand _saveCommand;
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new RelayCommand(param => this.Save(), param => this.CanSave);
NotifyPropertyChanged("SaveCommand");
}
return _saveCommand;
}
}
public void Save()
{
...
}
public bool CanSave { get { return true; } }
...
Run Code Online (Sandbox Code Playgroud)
ViewModelBase
实现INotifyPropertyChanged
接口以下是Button
命令的绑定方式:
<Button Content="Save" Margin="3" Command="{Binding DataContext.Save}" />
Run Code Online (Sandbox Code Playgroud)
将一个实例CustomerViewModel
分配给DataContext
包含a的窗口Button
.
给定的示例不起作用:我已将断点放入Save
方法中,但执行不会传递给方法.我已经看到很多例子(在stackoverflow上也是如此),但是无法弄清楚应该如何指定绑定. …
我不知道greasemonkey,但我认为这是一种编写或扩展Firefox的方法.
对于IE,有没有一个油脂?
例如:有一个网站托管一个页面,要求我安装MSXML5.0.
替代文字http://i50.tinypic.com/opmgsw.jpg
我不想要MSXML5.0.
我在想,如果我有一个非常棒的功能(如果它是我认为的那样),我就能编写一个将5.0改为6.0的脚本,一切都会很酷.
我知道有一种方法可以在Fiddler中做这种事情,如果我让它运行,并设置为代理.
我正在使用配置文件(在YAML中)来定义稍后用于验证我的应用程序所需的其他配置值的类型:
---
action: >
use List::MoreUtils;
my $value = $_;
any { $value eq $_ } qw(fatal keep merge non-fatal replace);
dir : return defined $_ ? -d $_ : -1;
file : return defined $_ ? -f $_ : -1;
string: 1;
---
config-element:
value: foo
type : file
etc ...
Run Code Online (Sandbox Code Playgroud)
我们的想法是eval
每个类型定义,将它们抛入哈希,然后调用验证配置数据(以下是易于理解的示意图):
#throw sub refs into hash
my %type_sub;
foreach my $key (keys %$type_def_ref) {
my $sub_str = "sub {$type_def_ref->{$key}}";
$type_sub{$key} = eval $sub_str;
}
#validate (myfile …
Run Code Online (Sandbox Code Playgroud) 当我定义一个java对象来实现可序列化的接口时,该对象的成员是否也可以序列化?或者我必须沿着嵌套深度走远,将路径上的每个对象重新定义为可序列化的?
TextBox.Text是字符串属性
但如果你指定一个int,十进制..etc它就可以了!!
int x = 5;
Textbox1.Text = x; // it works
Run Code Online (Sandbox Code Playgroud)
任何身体都知道为什么能告诉我?
我是Objective-c的新手并且遇到了问题.是否可以将函数的参数用作某些变量名?
例如,假设我有一堆图像:aPic1,aPic2,bPic1,bPic2,cPic1,cPic2,我想创建一个动作,这样每次单击一个按钮时,视图控制器将隐藏Pic1并显示Pic2,取决于单击哪个按钮.
- (void) performAction:(NSMutableString *) text
{
[text appendString:@"Pic1"].hidden = YES; //I wanna hide textPic1, which is a UIImageView
[text appendString:@"Pic2"].hidden = NO; //I wanna show textPic2, which is also a UIImageView
}
Run Code Online (Sandbox Code Playgroud)
我知道在这种情况下我不应该使用NSString或NSMutableString.任何人都知道如何通过这种功能实现我的目标?谢谢.
我对代码完整书中的段落感到有些困惑.
在"要避免的类"一节中,它写着:
"避免使用动词命名的类只有行为但没有数据的类通常不是一个类.考虑将类似DatabaseInitialization()或StringBuilder()的类转换为其他类的例程"
我的代码主要由没有数据的动词类组成.有发票阅读器,价格计算器,消息构建器等.我这样做是为了将每个类集中到一个任务.然后我将依赖关系添加到其他类以获取其他功能.
如果我正确理解了段落,我应该使用代码
class Webservice : IInvoiceReader, IArticleReader {
public IList<Invoice> GetInvoices();
public IList<Article> GetArticles();
}
Run Code Online (Sandbox Code Playgroud)
而不是
class InvoiceReader : IInvoiceReader {
public InvoiceReader(IDataProvider dataProvider);
public IList<Invoice> GetInvoices();
}
class ArticleReader : IArticleReader {
public ArticleReader(IDataProvider dataProvider);
public IList<Article> GetArticles();
}
Run Code Online (Sandbox Code Playgroud)
编辑 感谢所有回复.
我的结论是,我目前的代码比OO更多SRP,但它也受到"贫血领域模型"的影响.
我相信这些见解将来会对我有所帮助.
这个SSCCE说明了一切:
<!doctype html>
<html lang="en">
<head>
<title>Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#add').click(function() {
var ul = $('#ul');
var liclone = ul.find('li:last').clone(true);
var input = liclone.find('input');
input.attr('name', input.attr('name').replace(/(foo\[)(\d+)(\])/, function(f, p1, p2, p3) {
return p1 + (parseInt(p2) + 1) + p3;
}));
liclone.appendTo(ul);
$('#showsource').text(ul.html());
});
});
</script>
</head>
<body>
<ul id="ul">
<li><input type="text" name="foo[0]"></li>
</ul>
<button id="add">Add</button>
<pre id="showsource"></pre>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Copy'n'paste'n'run它,点击Add
几次按钮.在每次点击时,您都应该看到<ul>
要显示的HTML代码,<pre id="showsource">
预期代码大致应该是:
<li><input name="foo[0]" type="text"></li>
<li><input name="foo[1]" type="text"></li>
<li><input …
Run Code Online (Sandbox Code Playgroud) 我正在研究android应用程序,我能够使用ItemizedOverlay在地图上显示多个图标,并且我还实现了ItemizedOverlay的onTap(int index)方法,以在所需窗口中显示图标特定信息.
现在,我想在用户点击其他组合时更改所选叠加层的图标.我调用ItemizedOverlay的setFocus(OverlayItem)方法来显示特定叠加的不同图标.当用户点击任何特定的叠加层但在我调用setFocus(OverlayItem)方法时不会更改图标时,它可以正常工作.
有什么指针吗?在mapView中以编程方式更改所选叠加图标的最佳方法是什么?
我已经覆盖了我的自定义OverlayItem类的getMarker方法,以显示不同的overlayItem状态的不同标记.我想使用setFocus(OverlayItem)方法来更改OverlayItem的状态,并在选择时更改标记.
@Override
public Drawable getMarker(int stateBitset){
if(stateBitset==0){
icon = Util.getCategoryMapIcon(0);
icon.setBounds(0-icon.getIntrinsicWidth()/2, 0-icon.getIntrinsicHeight(), icon.getIntrinsicWidth()/2, 0);
return icon;
}else {
icon = Util.getCategoryMapIcon(OverlayItem.ITEM_STATE_SELECTED_MASK);
icon.setBounds(0-icon.getIntrinsicWidth()/2, 0-icon.getIntrinsicHeight(), icon.getIntrinsicWidth()/2, 0);
return icon;
}
}
Run Code Online (Sandbox Code Playgroud)
这里Util.getCategoryMapIcon(0)是返回相应图标的Utility方法,此方法需要一些参数,我已删除这些参数使这个例子看起来很简单.
以下是改变状态的代码
Button leftNavigation = (Button) findViewById(R.id.left_navigation_button);
leftNavigation.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
OverlayItem item = searchResultsOverlay.get(index+1);
setFocus(item);
}
});
Run Code Online (Sandbox Code Playgroud)
任何帮助都感激不尽.谢谢,Aamir
objective-c ×2
android ×1
asp.net ×1
binding ×1
c# ×1
class-design ×1
clone ×1
eval ×1
function ×1
google-maps ×1
greasemonkey ×1
iphone ×1
java ×1
jquery ×1
map ×1
msxml ×1
mvvm ×1
nested ×1
overlay ×1
parameters ×1
perl ×1
string ×1
subroutine ×1
wpf ×1