您的位置:首页 > 其它

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显示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: