所以我有一个简单的设置,一个带有Populating事件的自动完成框,我想绑定到一个命令.我用
clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity
Run Code Online (Sandbox Code Playgroud)
(这有更好的命名空间吗?)
绑定它并不是什么大不了的事,最重要的是将PopulatingEventArgs参数传递给bound命令.
那么我该如何根据PRISM的最佳实践和MVVM一般来做呢?
Silverlight 4中的新网络摄像头很酷.通过将其作为画笔公开,它允许超出Flash所具有的任何场景.
与此同时,在本地访问网络摄像头似乎只是故事的一半.没有人购买网络摄像头,这样他们就可以拍摄自己的照片并制作出有趣的面孔.他们购买网络摄像头是因为他们希望其他人看到最终的视频流,即他们希望将该视频流式传输到互联网,Skype或任何其他几十个视频聊天网站/应用程序.到目前为止,我还没弄清楚如何做到这一点
事实证明,这是非常简单的,以获得原始(Format32bppArgb格式)的字节流的保持,这表现在这里.
但除非我们想将原始字节流传输到服务器(这会占用过多的带宽),否则我们需要以某种方式对其进行编码.这更复杂.MS已经在Silverlight中实现了几个编解码器,但据我所知,他们都专注于解码视频流,而不是首先对其进行编码.这与我无法弄清楚如何直接访问H.264编解码器的事实不同.
有大量的开源编解码器(例如,在这里的ffmpeg项目中),但它们都是用C语言编写的,并且它们看起来不容易移植到C#.除非翻译10000多行看似这样的代码就是你的乐趣:-)
const int b_xy= h->mb2b_xy[left_xy[i]] + 3;
const int b8_xy= h->mb2b8_xy[left_xy[i]] + 1;
*(uint32_t*)h->mv_cache[list][cache_idx ]= *(uint32_t*)s->current_picture.motion_val[list][b_xy + h->b_stride*left_block[0+i*2]];
*(uint32_t*)h->mv_cache[list][cache_idx+8]= *(uint32_t*)s->current_picture.motion_val[list][b_xy + h->b_stride*left_block[1+i*2]];
h->ref_cache[list][cache_idx ]= s->current_picture.ref_index[list][b8_xy + h->b8_stride*(left_block[0+i*2]>>1)];
h->ref_cache[list][cache_idx+8]= s->current_picture.ref_index[list][b8_xy + h->b8_stride*(left_block[1+i*2]>>1)];
Run Code Online (Sandbox Code Playgroud)
Mono项目中的mooncodecs文件夹(这里)在C#(ADPCM和Ogg Vorbis)中有几个音频编解码器,还有一个视频编解码器(Dirac),但它们似乎只实现了各自格式的解码部分,java也是如此移植它们的实现.
我找到了Ogg Theora的C#编解码器(csTheora,http://www.wreckedgames.com/forum/index.php?topic = 1053.0 ),但同样,它只是解码,就像它所基于的jheora编解码器一样.
当然,从Java移植编解码器可能比从C或C++移植更容易,但我发现的唯一java视频编解码器只是解码(例如jheora或jirac).
所以我有点回到原点.看起来我们通过Silverlight将网络摄像头(或麦克风)连接到Internet的选项是:
(1)等待微软就此提供一些指导;
(2)花费大脑周期将一个C或C++编解码器移植到兼容Silverlight的C#;
(3)将原始的,未压缩的字节流发送到服务器(或者用zlib之类的东西稍微压缩),然后在服务器端编码; 要么
(4)等待比我聪明的人想出这个并提供解决方案.
还有其他人有更好的指导吗?我是否错过了对其他人来说非常明显的事情?(例如,Silverlight 4在某个地方是否有一些我错过的课程可以解决这个问题?)
我试图在Silverlight 4 Beta中创建一个简单的DataGrid,但似乎无法弄清楚如何让我的Note
列到wordwrap.
该表代表订单上的注释,因此它们的长度可变.我希望'Note'单元格垂直展开以适合内容.
我发现了许多类似的问题,但没有答案.Silverlight 4中有新内容可以解决这个问题吗?
<data:DataGrid AutoGenerateColumns="False" Name="dataGrid1" IsReadOnly="True">
<data:DataGrid.Columns>
<data:DataGridTextColumn Header="Date" Binding="{Binding Date}" />
<data:DataGridTextColumn Header="User" Binding="{Binding User}" />
<data:DataGridTextColumn Header="Note" Binding="{Binding Note}" />
</data:DataGrid.Columns>
</data:DataGrid>
Run Code Online (Sandbox Code Playgroud) public Image Base64ToImage(string base64String)
{
// Convert Base64 String to byte[]
byte[] imageBytes = Convert.FromBase64String(base64String);
MemoryStream ms = new MemoryStream(imageBytes, 0,
imageBytes.Length);
// Convert byte[] to Image
ms.Write(imageBytes, 0, imageBytes.Length);
System.Drawing.Image image = System.Drawing.Image.FromStream(ms, true);
return image;
}
Run Code Online (Sandbox Code Playgroud)
我想将byte []转换为图像,但Silverlight不支持System.Drawing.Image.还有其他选择
任何可以自由控制来查看Silverlight的PDF?
或者如何从内存流中查看silverlight中的pdf?
如何在列表框的默认样式中将列表框项目方向设置为水平.我的意思是默认是我们使用混合的样式.
尝试在使用Firefox作为浏览器的Visual Studio 2010中调试Silverlight 4应用程序时,我无法遇到任何断点.我收到消息"断点当前不会被击中".
debugging firefox breakpoints visual-studio-2010 silverlight-4.0
假设我们有一个简单的VM类
public class PersonViewModel : Observable
{
private Person m_Person= new Person("Mike", "Smith");
private readonly ObservableCollection<Person> m_AvailablePersons =
new ObservableCollection<Person>( new List<Person> {
new Person("Mike", "Smith"),
new Person("Jake", "Jackson"),
});
public ObservableCollection<Person> AvailablePersons
{
get { return m_AvailablePersons; }
}
public Person CurrentPerson
{
get { return m_Person; }
set
{
m_Person = value;
NotifyPropertyChanged("CurrentPerson");
}
}
}
Run Code Online (Sandbox Code Playgroud)
成功数据绑定到ComboBox就足够了,例如:
<ComboBox ItemsSource="{Binding AvailablePersons}"
SelectedValue="{Binding Path=CurrentPerson, Mode=TwoWay}" />
Run Code Online (Sandbox Code Playgroud)
请注意,Person已经Equals
过载,当我在ViewModel中设置CurrentPerson值时,它会导致组合框当前项显示新值.
现在假设我想在我的视图中添加排序功能 CollectionViewSource
<UserControl.Resources>
<CollectionViewSource x:Key="PersonsViewSource" Source="{Binding AvailablePersons}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Surname" Direction="Ascending" …
Run Code Online (Sandbox Code Playgroud) 我正在Silverlight 4 Beta中构建原型应用程序,我使用的是Out-of-Browser(OOB)功能.我需要OOB功能才能访问本地文件系统,我想避免编写ActiveX组件或Java小程序.
我需要能够在客户端计算机上安装后从浏览器启动OOB体验.我似乎能够做的就是从浏览器中检测应用程序是否已安装,然后要求用户从桌面或开始菜单(作为普通应用程序)启动它.
然而,这"打破"了客户所需的体验,应该从浏览器引导.有没有人能够直接从浏览器启动OOB应用程序?
谢谢,
马亭
我安装了Windows 7.
然后,我从此处使用Web Platform Installer安装了Web Developer 2010 Express .
然后我从这里安装了Silverlight 4 Toolkit 的4月15日版本.
然后我添加了这个参考:
替代文字http://www.deviantsart.com/upload/ijk0lm.png
然后在我的XAML中,我像这样引用它,但它没有给我智能感知并且告诉我我缺少一个程序集引用:
替代文字http://www.deviantsart.com/upload/cd4vrj.png
更新:
xmlns:tk="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
Run Code Online (Sandbox Code Playgroud)
即使在重建之后也不起作用
在Web Developer 2010 Express中使用Silverlight 4 Toolkit需要做什么?
所以我在另一台计算机上用Web Developer Express 2008中的Silverlight 3再次测试它,它确实按照我记忆的方式工作,所以为什么它不能在Silverlight 4中以这种方式工作,我需要更改才能获得它上班?:
wrappanel visual-studio-2010 silverlight-toolkit dockpanel silverlight-4.0