我遇到了WPF工具包中的图表引擎问题.
我没有将数据移动到适当的对象模型,因此ItemSource支持一个DataView.
第一次尝试
<chartingToolkit:ScatterSeries x:Name="TargetSeries"
DataPointStyle="{StaticResource TargetStyle}"
ItemsSource="{Binding Path=TargetSeriesData}"
IndependentValueBinding="{Binding Path=TargetSeries_X}"
DependentValueBinding="{Binding Path=TargetSeries_X}" />
Run Code Online (Sandbox Code Playgroud)
这崩溃是因为我认为绑定被认为是情节的值或某种不匹配.
第二次尝试
<chartingToolkit:ScatterSeries x:Name="TargetSeries"
DataPointStyle="{StaticResource TargetStyle}"
ItemsSource="{Binding Path=TargetSeriesData}"
IndependentValuePath="{Binding Path=TargetSeries_X}"
DependentValuePath="{Binding Path=TargetSeries_X}" />
Run Code Online (Sandbox Code Playgroud)
此崩溃发生在初始化步骤期间,因为Path属性不支持依赖项属性,因此无法绑定.
第三次尝试
<chartingToolkit:ScatterSeries x:Name="TargetSeries"
DataPointStyle="{StaticResource TargetStyle}"
ItemsSource="{Binding Path=TargetSeriesData}"
IndependentValuePath="targetFooXColumnName"
DependentValuePath="targetFooYColumnName" />
Run Code Online (Sandbox Code Playgroud)
现在这个有效!但我想使用绑定,所以我可以从使用targetFooXColumnName到切换targetFooBarXColumnName.因此,此解决方案将导致大量hacky外观代码手动切换路径.
有没有办法来解决这个问题?我可以使用某种转换器来获取Binding属性以正确地从DataView中的列中提取数据吗?
谢谢,乔尔
所以我需要在程序上为网格生成背景图像,它只需要.1秒.
所以我可以连接到SizeChanged事件,但是当你调整图表大小时,它会每秒触发甚至30次,所以resize事件显着滞后.
有没有人知道一个很好的方法来连接调整大小事件和测试天气使用完成大小调整,我尝试只是检查鼠标上/下状态,但当调整大小事件触发鼠标几乎总是下降.
好的,这是一个垒球初学WPF问题.
默认情况下,窗口的背景为白色.我正在尝试破解错误报告表单,我想模仿更标准的Windows外观和感觉.
获取背景的默认颜色的任何简单方法?
我正在使用PushFrame来确保我的窗口在执行其他代码之前完成绘图.我的应用程序有一些时间敏感的功能,需要在我继续执行代码之前更新窗口.
所以我使用msdn的样本:http://msdn.microsoft.com/en-us/library/vstudio/system.windows.threading.dispatcher.pushframe (v=vs.110) .aspx
哪个工作得很好,除非,如果用户在此代码执行窗口时拖动我的窗口并且您只能使用ctrl-alt-del返回它.
有任何想法吗?
我正在使用SynchronizationContext将事件编组回我的DLL中的UI线程,该线程执行许多多线程后台任务.
我知道单例模式不是最喜欢的,但是我现在用它来存储创建foo的父对象时UI的SynchronizationContext的引用.
public class Foo
{
public event EventHandler FooDoDoneEvent;
public void DoFoo()
{
//stuff
OnFooDoDone();
}
private void OnFooDoDone()
{
if (FooDoDoneEvent != null)
{
if (TheUISync.Instance.UISync != SynchronizationContext.Current)
{
TheUISync.Instance.UISync.Post(delegate { OnFooDoDone(); }, null);
}
else
{
FooDoDoneEvent(this, new EventArgs());
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这在WPF中根本不起作用,TheUISync实例UI同步(从主窗口馈送)永远不会与当前的SynchronizationContext.Current匹配.在Windows窗体中,当我做同样的事情时,他们将在调用后匹配,我们将回到正确的线程.
我讨厌的修复,看起来像
public class Foo
{
public event EventHandler FooDoDoneEvent;
public void DoFoo()
{
//stuff
OnFooDoDone(false);
}
private void OnFooDoDone(bool invoked)
{
if (FooDoDoneEvent != null)
{
if ((TheUISync.Instance.UISync != SynchronizationContext.Current) && (!invoked))
{ …Run Code Online (Sandbox Code Playgroud) 可以说我们有一个简单的课程
public class Foo
{
public string FooName;
}
Run Code Online (Sandbox Code Playgroud)
现在我们想做一些简单的工作.
public void SomeCallerMethod(List<Foo> listOfFoos)
{
string[] fooNames = listOfFoo. // What to do here?
}
Run Code Online (Sandbox Code Playgroud)
如果我甚至知道要拨打什么方法,我可能会找到其他的方法.
所以我使用BitConverter.GetBytes()将uint32转换为byte [],但我的数组中的顺序似乎是倒退的. http://msdn.microsoft.com/en-us/library/1184xdy4.aspx (显示它的byte []似乎是小端).
有没有更好的方法来处理这个而不仅仅是使用linq来反转字节数组?
我需要创建一些位图并将它们保存到文件系统中.由于某种原因,MScharting系统希望它的后台文件作为字符串形式的路径提供.
我正在动态创建背景图像,尽管只有几次.
创建这些文件然后清理它们的最佳方法是什么?
我想在 OSX 中提取 EDID 信息?
看起来它存储在IORegistry. 有没有办法使用当前的monomac库访问它?我可以用标准interop来做还是我需要写一个自定义shim?
看起来ioreg命令行也可以获取IODisplayEDID 属性,但似乎没有一种简单的方法来获取设备的缩写列表。
所以我有一个非常简单的刻录安装程序,主要包括.net升级或偶尔包含我们的应用程序需要与之交谈的硬件的驱动程序包.
MSI我们创建支持升级或降级.
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Bundle Name="My App Name" Manufacturer="Company Name" Version="!(bind.packageVersion.MyAPP_MSI)"
IconSourceFile="MyIcon.ico" DisableModify="yes" DisableRemove="yes"
UpgradeCode="{15E598EF-89CE-470B-8CEF-E32C8983DA33}" >
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" >
<bal:WixStandardBootstrapperApplication
LogoFile="$(var.CoreComponents.TargetDir)InstallerGraphics\Bootstrapper_Logo.png"
LicenseFile="$(var.CoreComponents.TargetDir)AppRoot\App License.rtf"
SuppressOptionsUI="yes" />
</BootstrapperApplicationRef>
<Chain>
<PackageGroupRef Id="NetFx451Web"/>
<MsiPackage DisplayName="My full Application Name" Id="MyAPP_MSI" SourceFile="$(var.Installer_MyAppMSI_TargetPath)"
DisplayInternalUI="yes" ForcePerMachine="yes" Visible="yes" />
<MsiPackage DisplayName="My Hardware Driver" Id="Installer_MSI_Driver" SourceFile="$(var.Installer_Driver.TargetPath)"
DisplayInternalUI="yes" ForcePerMachine="yes" Visible="yes" />
</Chain>
</Bundle>
</Wix>
Run Code Online (Sandbox Code Playgroud)
我们通常有测试版,当用户想要从测试版降级到我们的稳定版时,他们不能简单地执行旧的EXE安装程序.他们必须明确地从"添加/删除程序"中删除以前的程序包以安装较旧的Burn EXE.
这不是基于MSI的安装的问题.我们如何回到该功能?
日志
[0CB8:067C][2014-06-23T11:10:04]i001: Burn v3.8.1128.0, Windows v6.1(Build 7601: Service Pack 1), path:\\iop-filesvr\IOP\Builds\Main\8.1.240\IO Practiceware Client Setup.exe, cmdline: '-burn.unelevated BurnPipe.{197B8193-6EFC-4ED0-AF90-DE7205F13E65} {CD23A8AB-520B-4F5D-BCB9-98998C5A1EC0} 2216'
[0CB8:067C][2014-06-23T11:10:04]i000: …Run Code Online (Sandbox Code Playgroud)