学习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很多,那就用模板最方便。

参考技术B 虽然没用过QQ,看起来应该比较简单,直接写xaml就行,也可以使用DataTemplate或是重写ControlTemplate,就是ComboBox里面套Button就可以了吧,希望对你有帮助,还有疑问请追问或是Hi

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 应用程序时遇到问题

WPF中添加Ribbon遇到的问题

如何将显示的 sql 数据加载到 wpf 可滚动列表视图中?大型集合(20k+)而不会遇到内存问题?

WPF触控程序开发——整理的一些问题

大家好! 我遇到了C#winform的重登陆问题。就是说,如果一个用户登陆了后,就不能再次登录。