wpf开发遇到的一些问题
2011-12-21 19:55
253 查看
1.在无边框窗口里,webbrowser无法显示
当设属性WindowStyle="None"AllowsTransparency="True"Background="Transparent",webbrowser无法显示。
主要是因为webbrowser和普通的wpf控件绘制方式不一样。
下了codeplex上的Wpf Borderless
Window 这个开源程序解决了这个问题。
下载地址http://wpfborderless.codeplex.com/
2.page和webbrowser里的html无法执行前进后退操作
由于我们的客户端需要page和html相互导航,而frame的navigate系统又不支持这个功能。
最后使用了两个stack,一个保存前进的uri记录,一个保存后退的uri记录,自己操作前进后退功能。
3.listbox的data binding
因为需要listbox绑定自己的数据显示,而且listItem结构复杂,最后采用的DataTemplate来解决这个问题。
对于控件里button的事件响应,采用了button的的附近属性tag来标识属于哪个item。
4.绑定的数据改变后,如何通知ui显示
对于要绑定的数据继承INotifyPropertyChanged类
其属性要写成
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
public string Name
{
get
{
return this.m_name;
}
set
{
if (value != this.m_name)
{
m_name = value;
NotifyPropertyChanged("Name");
}
}
}
5 多线程
a可以通过ui控件的InvokeBegin函数把事件加到ui控件的 Dispatcher队列。
b.可以通过委托创建线程。
DownloadDelegate fetch = new DownloadDelegate(dowmloadTheFle);
fetch.BeginInvoke(null, null);
c.用DispatcherTimer类定时触发响应事件。比如下载时定时更新ui显示。
当设属性WindowStyle="None"AllowsTransparency="True"Background="Transparent",webbrowser无法显示。
主要是因为webbrowser和普通的wpf控件绘制方式不一样。
下了codeplex上的Wpf Borderless
Window 这个开源程序解决了这个问题。
下载地址http://wpfborderless.codeplex.com/
2.page和webbrowser里的html无法执行前进后退操作
由于我们的客户端需要page和html相互导航,而frame的navigate系统又不支持这个功能。
最后使用了两个stack,一个保存前进的uri记录,一个保存后退的uri记录,自己操作前进后退功能。
3.listbox的data binding
因为需要listbox绑定自己的数据显示,而且listItem结构复杂,最后采用的DataTemplate来解决这个问题。
对于控件里button的事件响应,采用了button的的附近属性tag来标识属于哪个item。
4.绑定的数据改变后,如何通知ui显示
对于要绑定的数据继承INotifyPropertyChanged类
其属性要写成
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
public string Name
{
get
{
return this.m_name;
}
set
{
if (value != this.m_name)
{
m_name = value;
NotifyPropertyChanged("Name");
}
}
}
5 多线程
a可以通过ui控件的InvokeBegin函数把事件加到ui控件的 Dispatcher队列。
b.可以通过委托创建线程。
DownloadDelegate fetch = new DownloadDelegate(dowmloadTheFle);
fetch.BeginInvoke(null, null);
c.用DispatcherTimer类定时触发响应事件。比如下载时定时更新ui显示。
相关文章推荐
- Android开发时遇到的一些问题
- ios移动开发遇到的一些小问题的解决办法
- 项目开发中遇到的一些问题--登录时跳转原页面
- Android开发过程中遇到的一些小问题
- 开发ReportViewer中遇到的一些问题
- [zz]开发时间过程中遇到的一些问题
- 配置开发环境遇到的一些问题及解决方法
- dwz问题(本文主要是供个人学习成长之用,陈述的是本人在开发过程中遇到的几个小问题的总结,可能兼或插入一些网络资料)
- 关于android开发遇到的一些问题的解决办法---间断的更新
- iOS开发之适配IPV6更新网络处理为AFNetworking3.x, 集成以及遇到的一些问题总结。
- android app开发遇到的一些问题(二)
- JNI开发遇到的一些问题记录(持续记录更新)
- WPF开发中遇到的问题及解决系列(二):如何获取通过binding生成的ComboBox或者ListBox等的Item
- 开发chrome插件时遇到的一些问题
- android开发中遇到的一些问题及解决方案
- android开发中遇到的一些问题
- Java后台开发过程中遇到的一些问题(基础)
- 混合开发交互中遇到的一些问题
- web开发一些常遇到的问题汇总
- 项目开发过程中遇到的一些问题和解决办法(逐渐添加)