想用WPF做一个类似QQ登入窗口记住密码下拉框wpf combobox 默认值的效果,里面有账号和关闭按钮图标

[Siverlight入门系列]MVVM模式下如何让下拉框ComboBox默认选中第一项html教程_Silverlight_WPF之家
Silverlight
[Siverlight入门系列]MVVM模式下如何让下拉框ComboBox默认选中第一项html教程
时间: 0:23:01&&作者:WPF之家&&来源:&&查看:&&评论:
内容摘要:    非MVVM方式也就是CodeBehind的模式我就不说了,很简单就是加载完毕事件处理里面加上boBox1.SelectedIndex=0即可。但MVVM模式下,就不那么方便了,需要绑定SelectedItem,例如:
    非MVVM方式也就是CodeBehind的模式我就不说了,很简单就是加载完毕事件处理里面加上boBox1.SelectedIndex=0即可。但MVVM模式下,就不那么方便了,需要绑定SelectedItem,例如:
2: &ComboBox ItemsSource=&{Binding Months}&
SelectedItem=&{Binding Month, Mode=TwoWay}& /&
  似乎可行,但如果是默认加载第一项的话,这个SelectedItem就应该是绑定源更新以后的ItemSource.FirstOrDefault(),为何要双向绑定呢?有一点不太爽。有没有其它办法呢?很简单,继承ComboBox,写一个控件,让它默认选中第一项,就解决这个问题了,不用绑定SelectedItem。  &ComboBox ItemsSource=&{Binding Months}& /&  自定义ComboBox控件代码如下,也非常简单,思路就是ItemSource更新以后就自动默认选中第一行即可:
1: public class CustomComboBox : ComboBox
/// &summary&
/// Initializes a new instance of the &see cref=&CustomComboBox&/& class.
/// &/summary&
public CustomComboBox()
Loaded += ComboBoxL
SelectionChanged += ComboBoxSelectionC
void ComboBoxLoaded(object sender, RoutedEventArgs e)
SetSelectedItem();
void ComboBoxSelectionChanged(object sender, SelectionChangedEventArgs e)
SelectedItem = e.AddedItems.Count & 0 ? e.AddedItems[0] : null;
public new object SelectedItem
get { return (object)GetValue(SelectedItemProperty); }
set { SetValue(SelectedItemProperty, value); }
public new static readonly DependencyProperty SelectedItemProperty =
DependencyProperty.Register(&SelectedItem&, typeof(object), typeof(CustomComboBox),
new PropertyMetadata((o, e) =& ((CustomComboBox)o).SetSelectedItem()));
private void SetSelectedItem()
if (Items.Count & 0)
base.SelectedIndex = 0;
//var value = SelectedI
//if (Items.Count & 0 && value != null)
base.SelectedIndex = Items.IndexOf(value);
protected override void OnItemsChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
base.OnItemsChanged(e);
SetSelectedItem();
49: }  如果你觉得代码好用就拿过去,否则请分享更好的代码。  本文来自Mainz的博客,原文地址:/Mainz/archive//2203741.html
原创作品,允许转载,转载时请务必以超链接形式标明文章&、作者信息和本声明。否则将追究法律责任。本文出自&&,请务必保留此出处:
&Powered byC# Winform的comboBox控件下拉框怎样做一个多选?请大神指教!麻烦您给出相应代码!_百度知道
C# Winform的comboBox控件下拉框怎样做一个多选?请大神指教!麻烦您给出相应代码!
提问者采纳
采纳率100%
其他类似问题
combobox的相关知识
按默认排序
其他6条回答
感觉用 ListBox 好点吧,用 ComboBox 多选有点怪
我建议是用textbox+dataGridView,行前面加checkbox复选
Textbox+Button+Control自己做一个吧
这个需要你自己重写comboBox控件了。网上也可能会有现成的
你在哪里见过ComboBox可以多选的?
用Listbox不行吗。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁什么是跨域JSONPproxy代理corsxdr  由于浏览器同源...
本教程为 李华明 编著的iOS-Cocos2d游戏开发系列教程:教程涵盖关于i......
专题主要学习DirectX的初级编程入门学习,对Directx11的入门及初学者有......
&面向对象的JavaScript&这一说法多少有些冗余,因为JavaScript 语言本......
Windows7系统专题 无论是升级操作系统、资料备份、加强资料的安全及管......被迫写一个类似qq登陆框上面的那个下拉框控件 - ct - 博客园
蓝色边框,选择时是深蓝色边框,下拉按钮可以自定义图片,不过只能是 15*16的BMP
class&CMyComboBox&:&public&CComboBox...{//&Constructionpublic:&&&&CMyComboBox();&&&&//&normal_id&普通状态图片的ID&&&&//&hover_id&&hover状态图片的ID&&&&//&push_id&&&push状态图片的ID&&&&CMyComboBox(unsigned&int&normal_id,unsigned&int&hover_id,unsigned&int&push_id);//&Attributespublic://&Operationspublic://&OverridesClassWizard&&&&//&&generated&virtual&function&overrides&&&&//{{AFX_VIRTUAL(CMyComboBox)&&&&protected:&&&&virtual&void&PreSubclassWindow();&&&&//}}AFX_VIRTUAL//&Implementationpublic:&&&&virtual&~CMyComboBox();&&&&//&Generated&message&map&functionsprotected:&&&&//{{AFX_MSG(CMyComboBox)&&&&afx_msg&void&OnPaint();&&&&afx_msg&void&OnMouseMove(UINT&nFlags,&CPoint&point);&&&&afx_msg&void&OnTimer(UINT&nIDEvent);&&&&afx_msg&void&OnLButtonDown(UINT&nFlags,&CPoint&point);&&&&afx_msg&void&OnLButtonUp(UINT&nFlags,&CPoint&point);&&&&//}}AFX_MSG&&&&DECLARE_MESSAGE_MAP()private:&&&&void&DrawButton(CDC*&pDC);private:&&&&unsigned&int&m_normal_&&&&unsigned&int&m_hover_&&&&unsigned&int&m_push_&&&&//<span style="COLOR: #-normal&1-hover&2-push&&&&int&&m_button_&&&&bool&m_&&&&bool&m_};#define&BUTTON_STATE_NORMAL&0#define&BUTTON_STATE_HOVER&&&&(1&&1)#define&BUTTON_STATE_PUSH&&&&(1&&2)/**////////////////////////////////////////////////////////////////////////////////&CMyComboBoxCMyComboBox::CMyComboBox():m_active(false),&&&&&&&&&&&&&&&&&&&&&&&&&&&m_normal_id(<span style="COLOR: #),&&&&&&&&&&&&&&&&&&&&&&&&&&&m_hover_id(<span style="COLOR: #),&&&&&&&&&&&&&&&&&&&&&&&&&&&m_push_id(<span style="COLOR: #),&&&&&&&&&&&&&&&&&&&&&&&&&&&m_button_state(BUTTON_STATE_NORMAL)...{}CMyComboBox::CMyComboBox(unsigned&int&normal_id,&&&&&&&&&&&&&&&&&&&&&&&&&unsigned&int&hover_id,&&&&&&&&&&&&&&&&&&&&&&&&&unsigned&int&push_id):&&&&&&&&&&&&&&&&&&&&&&&&&&&&m_active(false),&&&&&&&&&&&&&&&&&&&&&&&&&&&&m_normal_id(normal_id),&&&&&&&&&&&&&&&&&&&&&&&&&&&&m_hover_id(hover_id),&&&&&&&&&&&&&&&&&&&&&&&&&&&&m_push_id(push_id),&&&&&&&&&&&&&&&&&&&&&&&&&&&&m_button_state(BUTTON_STATE_NORMAL)...{}CMyComboBox::~CMyComboBox()...{}BEGIN_MESSAGE_MAP(CMyComboBox,&CComboBox)&&&&//{{AFX_MSG_MAP(CMyComboBox)&&&&ON_WM_PAINT()&&&&ON_WM_MOUSEMOVE()&&&&ON_WM_TIMER()&&&&ON_WM_LBUTTONDOWN()&&&&ON_WM_LBUTTONUP()&&&&//}}AFX_MSG_MAPEND_MESSAGE_MAP()/**////////////////////////////////////////////////////////////////////////////////&CMyComboBox&message&handlersvoid&CMyComboBox::PreSubclassWindow()&...{&&&&CRect&&&&&GetWindowRect(&rc);&&&&rc.left&-=&<span style="COLOR: #;&&&&rc.top&-=&<span style="COLOR: #;&&&&rc.bottom&-=&<span style="COLOR: #;&&&&rc.right&-=&<span style="COLOR: #;&&&&MoveWindow(&rc);&&&&ModifyStyle(<span style="COLOR: #,BS_OWNERDRAW);&&&&CComboBox::PreSubclassWindow();}voidCMyComboBox::OnPaint()...{&&&&CRect&&&&&&&&CDC*&&&&pDC;&&&&Default();&&&&&&&&pDC&=&GetDC();&&&&GetClientRect(rc);&&&&if(m_active)&&&&&&&&pDC-&Draw3dRect(rc,&RGB(<span style="COLOR: #,<span style="COLOR: #8,<span style="COLOR: #3),&RGB(<span style="COLOR: #,<span style="COLOR: #8,<span style="COLOR: #3));&&&&else&&&&&&&&pDC-&Draw3dRect(rc,&RGB(<span style="COLOR: #6,<span style="COLOR: #7,<span style="COLOR: #5),&RGB(<span style="COLOR: #6,<span style="COLOR: #7,<span style="COLOR: #5));&&&&//填充掉阴影&&&&rc.DeflateRect(<span style="COLOR: #,<span style="COLOR: #);&&&&pDC-&Draw3dRect(rc,&RGB(<span style="COLOR: #5,<span style="COLOR: #5,<span style="COLOR: #5),&RGB(<span style="COLOR: #5,<span style="COLOR: #5,<span style="COLOR: #5));&&&&//填充掉原来的按钮&&&&rc.left&+=&(rc.Width()&-&<span style="COLOR: #);&&&&rc.DeflateRect(<span style="COLOR: #,<span style="COLOR: #);&&&&pDC-&Draw3dRect(rc,&RGB(<span style="COLOR: #5,<span style="COLOR: #5,<span style="COLOR: #5),&RGB(<span style="COLOR: #5,<span style="COLOR: #5,<span style="COLOR: #5));&&&&DrawButton(pDC);&&&&ReleaseDC(pDC);}void&CMyComboBox::OnMouseMove(UINT&nFlags,&CPoint&point)&...{&&&&m_draw&=&true;&&&&SetTimer(<span style="COLOR: #,<span style="COLOR: #,NULL);&&&&OnTimer(<span style="COLOR: #);&&&&CComboBox::OnMouseMove(nFlags,&point);}void&CMyComboBox::OnTimer(UINT&nIDEvent)&...{&&&&POINT&&&&&CRect&rc,rc_&&&&GetCursorPos(&pt);&&&&GetWindowRect(&rc);&&&&&&&&rc_button&=&&&&&rc_button.left&+=&rc_button.Width()&-&<span style="COLOR: #;&&&&&&&&if(rc_button.PtInRect(pt))&&&&...{&&&&&&&&if(m_button_state&!=&BUTTON_STATE_PUSH)&&&&&&&&&&&&m_button_state&=&BUTTON_STATE_HOVER;&&&&}&&&&else&&&&&&&&m_button_state&=&BUTTON_STATE_NORMAL;&&&&if(rc.PtInRect(pt))&&&&...{&&&&&&&&m_active&=&true;&&&&&&&&if(m_draw)&&&&&&&&...{&&&&&&&&&&&&m_draw&=&false;&&&&&&&&&&&&Invalidate();&&&&&&&&}&&&&}&&&&else&&&&...{&&&&&&&&KillTimer&(<span style="COLOR: #);&&&&&&&&m_active&&&&&&&=&false;&&&&&&&&m_button_state&=&<span style="COLOR: #;&&&&&&&&Invalidate();&&&&}&&&&CComboBox::OnTimer(nIDEvent);}void&CMyComboBox::DrawButton(CDC*&pDC)...{&&&&if(m_normal_id&==&<span style="COLOR: #&||&m_hover_id&==<span style="COLOR: #&||&m_push_id&==&<span style="COLOR: #)&&&&&&&&return;&&&&CDC&&&&&&&&&&&&MemDC;&&&&CBitmap&&&&&&&&&&&&CRect&&&&&&&&&&&&GetWindowRect(&rc);&&&&&&&&MemDC.CreateCompatibleDC(pDC);&&&&if(&m_button_state&==&BUTTON_STATE_NORMAL&)&&&&...{&&&&&&&&bitmap.LoadBitmap(m_normal_id);&&&&}&&&&else&if(&m_button_state&==&BUTTON_STATE_HOVER&)&&&&...{&&&&&&&&bitmap.LoadBitmap(m_hover_id);&&&&}&&&&else&&&&...{&&&&&&&&bitmap.LoadBitmap(m_push_id);&&&&}&&&&MemDC.SelectObject(&bitmap);&&&&pDC-&BitBlt(rc.Width()-<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,<span style="COLOR: #,&MemDC,<span style="COLOR: #,<span style="COLOR: #,SRCCOPY);}void&CMyComboBox::OnLButtonDown(UINT&nFlags,&CPoint&point)&...{&&&&m_button_state&=&BUTTON_STATE_PUSH;&&&&Invalidate();&&&&CComboBox::OnLButtonDown(nFlags,&point);}void&CMyComboBox::OnLButtonUp(UINT&nFlags,&CPoint&point)&...{&&&&m_button_state&=&BUTTON_STATE_HOVER;&&&&Invalidate();&&&&CComboBox::OnLButtonUp(nFlags,&point);}}

我要回帖

更多关于 wpf combobox 模板 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信