Tag: silverlight 3.0

Silverlight 3 WriteableBitmap问题

我正在尝试在Silverlight3 RTM中使用新的WriteableBitmap,但是我失败了..在测试期间我曾经看过和使用的所有示例和演示都没有用。 我知道他们稍微改变了类接口,删除了例如Lock和Release方法(仍然在官方文档页面中记录)并且还改变了构造函数(不再将pixelformat作为参数,所有位图都将是32位来自我的理解)。 有人设法让一个例子有效吗? 这里有一个简约的例子(我在一些论坛中找到了它并略微修改了它); 它不起作用,没有显示位图 是的,我正在呼唤它..这里有一个最小的例子(我在网上发现并略微修改它); 它没有用,我得到一个空白页面(xaml包含一个名为inputImage的Image控件)。 int imageWidth = 100; int imageHeight = 100; //Create the bitmap WriteableBitmap b = new WriteableBitmap(imageWidth, imageHeight); for (int x = 0; x < imageWidth; x++) { for (int y = 0; y < imageHeight; y++) { // generate a color in 32bit format byte[] components = […]

如何在SilverLight 3项目中刷新ListBox.ItemsSource?

我是我的XAML,我有一个ListBox定义 在代码隐藏中,我定义了一个模块级的ObservableCollection设备。 private ObservableCollection devices = new ObservableCollection(); 在OnNavigatedTo事件中,我将集合绑定到列表框 lstStatus.ItemsSource = devices; 该集合很可能不会增长或缩小,但其内部的对象会一直在变化。 无论出于何种原因,当我执行以下代码时,列表不会更新: Device selectedDevice = null; foreach (Device dv in devices) { if (dv.IsTrunk) { selectedDevice = dv; break; } } if (selectedDevice != null) selectedDevice.StatusName = DateTime.Now.ToString(); else throw new Exception(); 事实上,我能够让它工作的唯一方法就是伪造它,从列表中删除项目然后再添加它。 显然不是长期的解决方案。 我错过了什么?

如何从WCF服务获取所有方法?

如何从代码中获取WCF启用Silverlight的服务的所有方法的列表。 我已经添加了Silverlight应用程序的服务引用。 我可以使用Reflection获得所有方法吗? 如果可以请给我举个例子。

如何在SilverLight中组合一些UserControl?

也许这是一个简单的问题,但我找不到答案。 我有三个用户控件,只有颜色不同。 其中有一个代码: 如何将它们组合成ObservableCollection Children? public class NodeViewModel : INotifyPropertyChanged { public ObservableCollection Children { get { return _children; } set { _children = value; NotifyChange(“Children”); } } private void NotifyChange(string propName) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propName)); } } 我如何使用此控件集合的then元素? 这样做有简单(或正确的方法)吗?

Silverlight从’哑’服务器加载参考数据点播

我有一个文本文件,其中包含300,000个单词的列表以及它们出现的频率。 每行的格式为Word:FequencyOfOccurence。 我希望可以从C#代码中访问此信息。 我不能硬编码列表,因为它太长了,我不知道如何从服务器上的文件访问它。 理想情况下,我理想情况下只有在使用时才能下载信息(为了节省带宽)但这不是一个高优先级,因为文件不是太大而且互联网速度总是在增加。 它不需要用于绑定。 项目构建完成后,无需编辑该信息。

Silverlight DataTemplate中的Access元素

即使在SO上已经存在一些相关问题,我也无法找到以下问题的清洁解决方案。 如果我有一个多次使用的数据模板,例如TreeViewItem.HeaderTemplate,我怎样才能更改某些TreeViewItems的模板。 例如,假设我的TVI HeaderTemplate有一个文本块,根据字符串,我想使字体粗体。 我想做这样的事情: ((TextBlock)myTreeView.Items.ElementAt(0).FindName(“myTextBlock”)).FontWeight = FontWeights.Bold; 有人有解决方案吗? – >谢谢埃文 编辑:有没有办法编写一个通用函数来获取基于它的名称的控件,即使它在数据模板中? LayoutRoot.FindName(“myTextBlock”); 如果myTextBlock不在datatemplate中,它将起作用。 如何编写findElementInDataTemplate(string elementName, string parentName)函数? Evan的答案不是我正在寻找的原因是因为我正在开发一个控件。 我希望使用我的控件的应用程序开发人员能够更改控件中的任何元素。 如果我使用Evan的解决方案,则需要应用程序开发人员访问控件中的所有模板。 可能,但不理想。 谢谢!

域服务与WCF服务?

我正在慢慢钻研Silverlight,经过一段时间的努力,我终于能够将自己的自定义对象从我的网站返回到我的silverlight客户端,使用支持Siverlight的WCF服务。 现在,我在域服务和WCF服务的差异之间有点不知所措。 我已经完成了教程,其中域服务绑定到数据上下文,然后绑定到siliverlight控件。 伟大的:)然而,我在哪里击中岩石试图返回任何酒吧IQuerryable; 作为String,我自己的简单类型等。 我找到了一些教程,例如这个教程用[ServiceContract]注释标记一个函数,并在你的简单类中有一个[Key]。 这没有用,[ServiceContract]无法解析,我后来找到了一个指导说使用[Invoke]。 然后我遇到了无法加载函数并得到结果的问题,我基本上都去了这里 [Invoke] public string HelloWorld(string name) { return string.Format(“Hello {0}.”, name); } var helloWorld = new HelloWorldDomainContext(); //helloWorld.HelloWorldCompleted += new EventHandler<InvokeEventArgs>(HelloWorldHelloWorldCompleted); //helloWorld.HelloWorld(“Mark Monster”); 无论如何,所以我随后发现了启用了Silverlight的WCF服务,并且能够返回我自己的自定义对象并调用它。 tl; dr – 域服务是否仅在绑定到Silverlight控件时使用? 即它是一种直接的单向绑定,并在需要时被调用,并且我在服务器上进行所有与Linq相关的排序/过滤/选择? 并且假设我想返回一个xmlString,然后我使用WCF服务? 我是否适合在我的应用程序中使用WCF服务和域服务? 对不起,如果上面有点混乱! 只是试图掌握这一切来自ASP.NET / Flex 非常感谢。

获取当前用户控件或Silverlight 3中的任何GUI的屏幕截图

我想询问是否可以以编程方式获取当前用户控件的屏幕截图并将其另存为silverlight 3中的文件。 我找到了一些方法来保存Silverlight 3中Canvas的图像文件,但用户控件或子窗口怎么样? 谢谢,

如何在代码中定义DataTemplate?

如何在代码中创建DataTemplate (使用C#),然后向该DataTemplate添加控件? 我正在使用Sivlerlight。

(Mis)使用C#迭代器实现协同程序的缺陷

我正在编写重构Silverlight程序,以从WCF服务中消耗其现有业务逻辑的一部分。 在这样做时,我遇到了Silverlight 3中的限制,它只允许对WCF服务的异步调用,以避免长时间运行或无响应的服务调用阻塞UI线程(SL有一个有趣的排队模型来调用WCF服务)在UI线程上)。 因此,编写曾经简单明了的内容变得越来越复杂( 请参阅我的问题末尾的代码示例 )。 理想情况下,我会使用协同程序来简化实现,但遗憾的是,C#目前不支持协同程序作为本机语言工具。 但是,C#使用yield return语法确实具有生成器(迭代器)的概念。 我的想法是重新使用yield关键字,以允许我为相同的逻辑构建一个简单的协同模型。 然而,我不愿意这样做,因为我担心可能会有一些隐藏的(技术性)陷阱,我没有预料到(鉴于我对Silverlight和WCF的相对缺乏经验)。 我也担心未来的开发人员可能不清楚实现机制,并且可能会阻碍而不是简化他们将来维护或扩展代码的工作。 我已经在SO上看到了关于重构迭代器以构建状态机的问题: 使用“yield”关键字实现状态机 ,虽然它与我正在做的事情不完全相同,但它确实让我暂停。 但是,我需要做一些事情来隐藏服务调用的复杂性,并管理此类更改中的缺陷的工作量和潜在风险。 我对可以用来解决这个问题的其他想法或方法持开放态度。 原始的非WCF版本的代码看起来像这样: void Button_Clicked( object sender, EventArgs e ) { using( var bizLogic = new BusinessLogicLayer() ) { try { var resultFoo = bizLogic.Foo(); // … do something with resultFoo and the UI var resultBar = bizLogic.Bar(resultFoo); // … […]