学习WPF时遇到的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习WPF时遇到的问题相关的知识,希望对你有一定的参考价值。
如何用WPF制作出QQ聊天窗口里面的这些控件。
这其实是由两个button拼接而成的(那也可以是togglebutton,比button的状态要少,但因此也比较省资源)左边是一个content为一张图片的button,右边是content为带三角箭头的button。左边用来执行某一具体操作,右边弹出一个popup(里面可以是listbox,每个listboxItem的selected又对左边button的具体操作属性做设置) 参考技术A 这些只是图标,其实就是一个按钮背景图片。WPF可以直接在Button的content里指定一个Image作为按钮的背景。追问
不应该是combobox么
追答ComboBox的每个ComboBoxItem都相当于一个容器,这个容器你可以任意往里放东西,你可以放一个StackPannel
我的意思是两个控件好像是左边一个Button右边是一个Combobox,这两个组合起来的。但是实际上效果却不是那样。
追答就是一个包含了图片和文字的ComboBoxItem被选中后的效果,你可以试试看,我以前做过啊
追问需要使用模版吗
追答就是在.xaml后台文件定义的啊,不需要什么模板。
当然如果你的Item很多,那就用模板最方便。
WPF中的Popup控件,遇到个问题,求助
别用button了、button的click事件在popup的关闭事件之后触发、没办法在click事件中判断popup关闭是因为点了别的地方自动关闭的 还是点了button上自动关闭的。可以放一个图片在那里。我之前也遇到过这个问题要解决。我不知道你需不需要在popup弹出和关闭时。那个按钮的显示状态需不需要改变,比如我当时需要做的就是popup关闭时,按钮是一个向下的箭头、打开时是一个向上的箭头(类似于QQ登陆窗口,账号输入框)。
我是用那个图片的mousedown mouseup 还有popup的关闭事件 三个事件去处理的。
bool IsUnchenked = false; //鼠标是否在下拉框没有弹出的时候按下
bool IsClick = false; //鼠标是否按下
bool IsShowAccountList_Closed = true; //下拉框是否关闭
int AccountInfoListSelectedIndex = 0;
/// <summary>
/// 下拉框关闭触发事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ShowAccountList_Closed(object sender, EventArgs e)
Pulldown.Visibility = System.Windows.Visibility.Visible;
Pullup.Visibility = System.Windows.Visibility.Hidden;
IsShowAccountList_Closed = true;
/// <summary>
/// 下拉框弹出按钮被按下
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Pull_MouseDown(object sender, MouseButtonEventArgs e)
IsClick = true;
if (IsShowAccountList_Closed)
IsUnchenked = true;
/// <summary>
/// 下拉框按钮上响应鼠标Up事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Canvas_MouseUp(object sender, MouseButtonEventArgs e)
if (IsUnchenked)
IsUnchenked = false;
IsShowAccountList_Closed = false;
Pulldown.Visibility = System.Windows.Visibility.Hidden;
Pullup.Visibility = System.Windows.Visibility.Visible;
ShowAccountList.IsOpen = true;
if (AccountInfoListSelectedIndex > -1 && AccountInfoListSelectedIndex < AccountInfoList.Items.Count)
AccountInfoList.SelectedIndex = AccountInfoListSelectedIndex;
参考技术A 你可以后台指定它的固定位置
以上是关于学习WPF时遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章
我在使用 MVVM for WPF 实现命令处理器模式时遇到问题
在 VS 2010 中将控制台应用程序转换为 WPF 应用程序时遇到问题