是否可以将带有canvas的itemscontrol作为模板绑定到多个DataTemplates?
我有2个集合,根据类型我想在画布上显示不同的控件.
我不确定,但我可以考虑一个有2个ObservableCollections的Viewmodel.例如,如果我有"形状"和"连接",我想在画布上显示它们?如果是一个绘图场景......
我想以mvvm方式执行此操作,我不确定多个DataTemplate方法是否正确但我想到了这一点.但是我仍然有问题要把绑定直接放在我脑海里.如果我为我设置DataContext到ViewModel似乎不可能将2个集合绑定到items控件... =(我也对其他想法开放....
这可能吗?如果是这样,绑定将如何看起来像
我正在尝试从我的应用程序的Winforms部分拖动数据包含在"ElementHost"中的WPF控件上.当我尝试这样做时它会崩溃.
尝试相同的东西,但从Winforms到Winforms工作正常.(参见下面的示例代码)
我需要帮助才能完成这项工作......有什么线索我做错了什么?
谢谢!
示例:
在下面的示例代码中,我只是尝试拖动在标签控件上启动拖动时创建的自定义MyContainerClass对象1)System.Windows.Forms.TextBox(Winforms)和2)System.Windows.TextBox (WPF,添加到ElementHost).
情况1)工作正常但案例2)在尝试使用GetData()检索丢弃数据时崩溃.GetDataPresent("WindowsFormsApplication1.MyContainerClass")返回"true"所以从理论上讲,我应该能够像在Winforms中那样检索那种类型的drop数据.
这是崩溃的堆栈跟踪:
"Error HRESULT E_FAIL has been returned from a call to a COM component" with the following stack trace: at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo) at System.Windows.Forms.DataObject.GetDataIntoOleStructs(FORMATETC& formatetc, STGMEDIUM& medium) at System.Windows.Forms.DataObject.System.Runtime.InteropServices.ComTypes.IDataObject.GetDataHere(FORMATETC& formatetc, STGMEDIUM& medium) at System.Windows.Forms.DataObject.System.Runtime.InteropServices.ComTypes.IDataObject.GetData(FORMATETC& formatetc, STGMEDIUM& medium) at System.Windows.DataObject.OleConverter.GetDataInner(FORMATETC& formatetc, STGMEDIUM& medium) at System.Windows.DataObject.OleConverter.GetDataFromOleHGLOBAL(String format, DVASPECT aspect, Int32 index) at System.Windows.DataObject.OleConverter.GetDataFromBoundOleDataObject(String format, DVASPECT aspect, Int32 index) at System.Windows.DataObject.OleConverter.GetData(String format, Boolean autoConvert, DVASPECT aspect, Int32 index) at System.Windows.DataObject.OleConverter.GetData(String format, Boolean autoConvert) …
在我正在运行的项目中,我需要将此代码编译为DLL:
// svgzHandler.cs
using System;
using System.Web;
namespace svgzHandler
{
public class svgzHandler : IHttpHandler
{
#region IHttpHandler ????
public bool IsReusable { get { return true; } }
public void ProcessRequest(HttpContext context)
{
HttpResponse r = context.Response;
r.ContentType = "image/svg+xml";
r.AppendHeader("Content-Encoding", "gzip");
r.WriteFile(context.Request.PhysicalPath);
}
#endregion
}
}
Run Code Online (Sandbox Code Playgroud)
只有我不是程序员,没有任何想法,这一切都意味着什么.另外,日文字符应该被替换为什么?它是一个文件夹吗?一份文件?
我有Visual Studio 2010 Ultimate,所以我有编译器,但这是我曾经触及过的第一个C#代码.
谢谢您的帮助!
PS:我不知道这是否会有所帮助,但这是带有说明的网站(翻译自日语):http://www.microsofttranslator.com/bv.aspx? ref = Internal&from =&to = en&a = http:/ /blog.wonderrabbitproject.net/post/2009/06/13/svgze381aee3838fe383b3e38388e383a9e38292IIS75e381a6.aspx
wpf ×2
c# ×1
data-binding ×1
dll ×1
interop ×1
mvvm ×1
silverlight ×1
viewmodel ×1
winforms ×1