我想通过使用RelayCommand将我的应用程序的XAML(View)中定义的参数传递给ViewModel类.我关注了Josh Smith关于MVVM的优秀文章,并实现了以下内容.
XAML代码
<Button
Command="{Binding Path=ACommandWithAParameter}"
CommandParameter="Orange"
HorizontalAlignment="Left"
Style="{DynamicResource SimpleButton}"
VerticalAlignment="Top"
Content="Button"/>
Run Code Online (Sandbox Code Playgroud)
ViewModel代码
public RelayCommand _aCommandWithAParameter;
/// <summary>
/// Returns a command with a parameter
/// </summary>
public RelayCommand ACommandWithAParameter
{
get
{
if (_aCommandWithAParameter == null)
{
_aCommandWithAParameter = new RelayCommand(
param => this.CommandWithAParameter("Apple")
);
}
return _aCommandWithAParameter;
}
}
public void CommandWithAParameter(String aParameter)
{
String theParameter = aParameter;
}
#endregion
Run Code Online (Sandbox Code Playgroud)
我在CommandWithAParameter方法中设置了一个断点,并观察到aParameter设置为"Apple",而不是"Orange".这看起来很明显,因为使用文字字符串"Apple"调用CommandWithAParameter方法.
但是,查看执行堆栈,我可以看到"Orange",我在XAML中设置的CommandParameter是RelayCommand实现ICommand Execute接口方法的参数值.
也就是执行堆栈下面方法中参数的值是"Orange",
public void Execute(object parameter)
{
_execute(parameter);
}
Run Code Online (Sandbox Code Playgroud)
我想弄清楚的是如何创建RelayCommand ACommandWithAParameter属性,以便它可以使用XAML中定义的CommandParameter"Orange"调用CommandWithAParameter方法.
有没有办法做到这一点?
我为什么要这样做?"On The …
更新到Visual Studio 2012 Update 3(我之前运行的是Update 2)后,NuGet无法加载.我的意思是,在我加载了一个使用NuGet并且曾经工作的解决方案后,包管理器不再出现.*它不会显示在"工具"菜单下.*右键单击解决方案后,NuGet(管理NuGet包)不显示在菜单中*右键单击项目后,NuGet(管理NuGet包)未显示在菜单中
"扩展和更新"对话框(TOOLS/Extensions和Updates ...)确实将NuGet软件包管理器显示为已安装,当我单击它时,它显示可以卸载它.
此外,当我在卸载然后重新安装NuGet软件包管理器(从我在CodePlex nuget站点上的下载)中检查安装日志后,它显示它已成功安装:
/10/2013 11:39:05 AM - Beginning to install extension to Microsoft Visual Studio Professional 2012...
7/10/2013 11:39:05 AM - Install to Microsoft Visual Studio Professional 2012 completed successfully. The extension has been installed to C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 11.0\\COMMON7\IDE\EXTENSIONS\VYALGTD2.XZS\
Run Code Online (Sandbox Code Playgroud)
我检查过,这个文件夹确实存在并包含NuGet dll.
当我转到TOOLS/Options ...对话框并选择Package Manager时,右侧窗格显示文本:"加载此属性页时出错".展开包管理器并选择"常规"或"包源"时,将显示相同的文本.
我已经多次卸载并重新安装了NuGet,我已经从下载的VSIX中直接安装了两个,并直接在Extensions and Updates对话框中安装,结果总是一样的.
我已经安装了旧版本的NuGet,我得到了相同的结果.我已卸载Visual Studio并重新安装它,我在版本1,更新2或更新3中得到相同的结果.
尝试加载NuGet时,Activity.log.xml文件显示以下问题:
<entry>
<record>211</record>
<time>2013/07/10 17:39:44.295</time>
<type>Information</type>
<source>Microsoft.VisualStudio.CommonIDE.ExtensibilityHosting.VsShellComponentModelHost</source>
<description>Successfully loaded component assembly from cache</description>
<path>C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 11.0\COMMON7\IDE\EXTENSIONS\VYALGTD2.XZS\NuGet.VisualStudio.dll</path> …Run Code Online (Sandbox Code Playgroud) 我有一个WPF应用程序,我已将WPF控件中的所有字符串解压缩到.resx文件中.我也支持每种语言的.resx文件(.es.resx,.ja.resx等).
是否有一种简单/直接的方法可以在设计时查看输出在其他语言中的外观.它可以节省相当多的时间来不必运行应用程序,查看需要调整的控件,做笔记,停止应用程序,进行更改并重复.
我宁愿在设计时使用Blend直接进行更改.
有任何想法吗?
我正在寻找一种算法,这种算法可以让我在一张大型车辆列表中可视化地分离任意两到四辆车辆,这些车辆在地图上足够靠近,使得它们彼此模糊不清.我需要过滤掉车辆超过四辆车的情况,因为车辆将大量聚集在某些区域,在这些情况下将它们分开是不重要的.该算法还应标记已经处理的车辆.
在我的问题空间中,更重要的是要知道车辆存在并且能够看到有关它们的信息,而不是获得关于它们所在位置的绝对准确的信息.
这个想法是增加大约10码(考虑到正在使用的地图比例),因此可以看到单独的车辆,而不是被附近的其他车辆遮挡.
我想到了几种方法可以做到这一点,但考虑到这里答案的质量以及有人可能已经这样做的事实,我想我会发布这个问题.
我正在添加一个当前显示的图像,以帮助澄清作为建议的评论之一(好吧,它不是图表,但这是实际向用户显示的内容).
一些答案需要改变用于指示在给定位置有多少车辆(高尔夫球车)的视觉队列.我不想改变用户在视觉上的期望,并且必须向用户解释其含义.使用正方形的答案最接近我所寻找的但这只是视觉部分.我也正在寻找如何最好地遍历2到4个高尔夫球车的列表寻找组的算法,这些高尔夫球车在n(比如说5码)之内,而忽略了更大的分组(推车谷仓,小吃棚等).图标上的数字对应于购物车编号.
此应用程序还允许用户缩放地图进/出,以便进一步缩小地图,汽车之间需要更多的分离,以便它们在视觉上不重叠.
图中注意到汽车78和62遮挡了它们后面的汽车.
