是否可以像这样调用ac(++)静态函数指针(不是委托)
typedef int (*MyCppFunc)(void* SomeObject);
Run Code Online (Sandbox Code Playgroud)
来自c#?
void CallFromCSharp(MyCppFunc funcptr, IntPtr param)
{
funcptr(param);
}
Run Code Online (Sandbox Code Playgroud)
我需要能够从c#回调到一些旧的c ++类.C++是托管的,但类不是ref类(还).
到目前为止,我不知道如何从c#调用c ++函数指针,是否可能?
我注意到在使用MS Visual Studio 2008生成新的C++项目时,Release版本包含调试符号 - 特别是启用了以下设置:
我在Visual Studio的早期版本中从未注意到这一点.
因此,除了生成更大的EXE文件之外,启用这些设置是否有任何缺点?
我有一个DataGrid绑定到IEditableObject的集合.
现在当我在一个单元格中单击两次时,它将被打开以进行编辑.
有趣的是:BeginEdit将被调用两次.有时对于相同的EditableObject,但有时对于两个不同的对象(特别是当我使用PgDn直到我到达DataGrid的末尾)时,将首先调用正确的一个,然后从集合中调用其他一些项目,之前从未进行过聚焦.
EndEdit也被调用两次,但始终用于所选项,而不是错误的项.
这是一个已知的问题吗?任何解决方法只能获得(右侧)一个通知.
我有一个使用Model-View-ViewModel模式的WPF应用程序.
在我的ViewModel中,我有一个ListCollectionView来保存项目列表.
此ListCollectionView绑定到我的View中的ListBox.
<ListBox Grid.Row="1" ItemsSource="{Binding Useragents}" SelectionMode="Multiple"/>
Run Code Online (Sandbox Code Playgroud)
ListBox的SelectionMode = Multiple,因此您可以一次选择更多项目.现在,ViewModel需要知道选择了哪些项目.
问题是:在View-Model-ViewModel模式中,ViewModel无法访问View,因此我不能只询问ListBox选择了哪些项目.我只有ListCollectionView,但我找不到一种方法来找到那里选择的项目.
那么如何在ListBox中找到已选择的项目?或者实现这一目标的技巧(可能在我的项目中将某些东西绑定到布尔'IsSelected'但是什么?怎么样?)
也许有人正在使用这种模式,可以帮助我吗?
是否有任何体面的方法来获得绑定到十进制值的WPF控件?
当我将TextBox或DataGridTextColumn绑定到小数时,数据条目会耗费大量时间.
<TextBox Text="{Binding MyDecimal, UpdateSourceTrigger=PropertyChanged,
ValidatesOnDataErrors=True}"/>
Run Code Online (Sandbox Code Playgroud)
当我尝试在此TextBox中输入"0,5"时,我将得到"5".根本不可能输入"0,5"(除了输入1,5并用"0"替换"1").
当我使用StringFormat时,数据输入仍然很少:
<TextBox Text="{Binding MyDecimal, StringFormat=F1, UpdateSourceTrigger=PropertyChanged,
ValidatesOnDataErrors=True}"/>
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试输入"0,5"时,我最终会得到"0,5,0",这仍然是错误的,但至少我可以删除尾随的"0"而没有太多问题.
尽管如此,使用WPF输入小数会吸引大量时间,因为此输入字段非常容易出现数据输入错误,这对于值来说尤其令人痛苦!
那么我应该用什么来为wpf中的十进制数据输入?或者微软不支持十进制数据?
在WPF中,有两种方法可以将焦点设置为元素.
您可以调用input元素的.Focus()方法,也可以使用input元素作为参数调用Keyboard.Focus().
// first way:
item.Focus();
// alternate way:
Keyboard.Focus(item);
Run Code Online (Sandbox Code Playgroud)
这两者有什么区别?在某些情况下,是否有特殊原因使用其中一个而不是另一个?
到目前为止,我注意到没有任何区别 - 无论使用哪种方法,该项目始终具有逻辑焦点以及键盘焦点.
我想在传统的win32应用程序中使用WPF窗口.我想以类似的方式表现它们,就像WPF窗口始终显示在win32窗口之上.
为此,我想将WPF窗口的所有者设置为win32窗口,但我不知道如何实现这一点.
这里有什么帮助?
由于答案隐藏在一些链接后面,这里的代码就是诀窍:
System::Windows::Interop::WindowInteropHelper^ helper = gcnew System::Windows::Interop::WindowInteropHelper(myWpfChildWindow);
helper->Owner = (System::IntPtr)myMainWindowHWND;
Run Code Online (Sandbox Code Playgroud) 我有一个wcf服务,我想在azure上运行,但我有几个问题:
首先:我是否选择Web角色或辅助角色来运行wcf服务?
第二:客户端使用呼叫登录服务,之后服务应记住谁登录(会话).问题是,出于防火墙的原因,我可能应该使用一些http绑定.但这些似乎不支持会议?
或者我是否需要AppFabric进行会话(无论如何,AppFabric是什么?)?
是否有一个很好的完整教程如何托管wcf服务?
我已将TextBox绑定到Decimal.我的问题是,Binding使用美国数字标准,使用点进行小数分隔("1.5")
我的系统是德语,并配置为使用逗号作为小数分隔("1,5").
我需要TextBox绑定来显示并使用逗号而不是点来分隔小数.
如何获得绑定以尊重当前设置的数字输入的本地化/文化设置?
在我的c#应用程序中,我通常使用以下代码获取版本(以显示客户):
System.Reflection.Assembly.GetExecutingAssembly().GetName().Version
Run Code Online (Sandbox Code Playgroud)
这在Windows Phone 7中不起作用(它会挂起模拟器,而电话崩溃对MS来说是禁忌).
那么,我如何在Windows Phone 7设备上获得执行的版本?
[更新]如下面的评论中所述,在wp7应用程序中调用GetName()似乎是个问题.