1. 程式人生 > >WPF-Listbox-ListboxItem雙擊事件實現-MVVM模式

WPF-Listbox-ListboxItem雙擊事件實現-MVVM模式

<ListBox Name="EsCanSelectList" Grid.Row="1"  ItemsSource="{Binding CanSelectList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding  Path=ExportName}">
                                        <TextBlock.InputBindings>
                                            <MouseBinding Command="{Binding DataContext.EsCanSelectListMouseDoubleClickCommand, ElementName=w}" MouseAction="LeftDoubleClick"></MouseBinding>
                                        </TextBlock.InputBindings>
                                    </TextBlock>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>
DataContext.EsCanSelectListMouseDoubleClickCommand   C#後臺滑鼠左鍵雙擊事件命令實現
ElementName=w    資料來源為視窗  w為視窗名稱
Path=ExportName  textblock顯示資料來源   為CanSelectLis動態資料集合中的一個元素的屬性
C#後臺程式碼:
    /// <summary>
    /// 匯出設定的資料模型
    /// </summary>
    public class ExportModel
    {
        public int ExportID { get; set; } 
        public string ExportName { get; set; }
    }
  檢視模型VeiwModel
public class ExportSettingVeiwModel:ViewModels
    {
        private ObservableCollection<ExportModel> canSelectList;
        /// <summary>
        /// 可選擇欄位
        /// </summary>
        public ObservableCollection<ExportModel> CanSelectList
        {
            get { return canSelectList; }
            set 
            { 
                canSelectList = value;
                RaisePropertyChanged("CanSelectList");
            }
        }

        public ICommand EsCanSelectListMouseDoubleClickCommand { get; set; }
        public ExportSettingVeiwModel()
        {
            EsCanSelectListMouseDoubleClickCommand = new DelegateCommand(EsCanSelectList_MouseDoubleClick);
            CanSelectList = new ObservableCollection<ExportModel>();
            ExportModel ceshi = new ExportModel();
            ceshi.ExportID = 1;
            ceshi.ExportName = "ceshi";
            CanSelectList.Add(ceshi);
            
        }


        public void EsCanSelectList_MouseDoubleClick()
        {
            if (CanSelectList.Count > 0 && _exportsetting.EsCanSelectList.SelectedIndex >= 0)
            {


            }
            //{
            //    int selectindex = _exportsetting.EsCanSelectList.SelectedIndex;
            //   // ExportList.Add(CanSelectList[selectindex]);
            //    CanSelectList.RemoveAt(selectindex);
            //    if (selectindex < CanSelectList.Count)
            //    {
            //        _exportsetting.EsCanSelectList.SelectedIndex = selectindex;
            //    }
            //    else
            //    {
            //        _exportsetting.EsCanSelectList.SelectedIndex = selectindex - 1;
            //    }
            //}
        }
}

相關推薦

WPF-Listbox-ListboxItem事件實現-MVVM模式

<ListBox Name="EsCanSelectList" Grid.Row="1" ItemsSource="{Binding CanSelectList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">

flex Datagrid資料列事件實現

    最近做flex的專案遇到了一個問題:要實現雙擊DataGrid的一行資料,將該行資料賦值到開啟的新視窗中。    在網上找了好久,發現要麼答非所問,要麼就是隻言片語。所以我想通過CSDN這個平臺把我的經驗總結一下。先貼一下程式碼:

wpf datagrid 行事件

Xaml: <DataGrid ItemsSource="{Binding SessionList}"Grid.Row="2"Grid.Column="0"Grid.ColumnSpan="2"AutoGenerateColumns="False"ScrollViewer.CanContentScro

WPF ListBoxItem、單事件分別處理

class frame != timers 單擊事件 nta end log handler 1      private void listBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)

JQuery如何實現事件時不觸發單事件

art 屏蔽 settime 事件 順序 tin on() () 延時 單擊和雙擊事件的執行順序: 單擊(click):mousedown,mouseout,click;  雙擊(dblclick):mousedown,mouseout,click , mou

JQuery如何實現事件時不觸發單事件,解決鼠標單沖突問題

方法 span eve 雙擊事件 col button null pan 綁定 在jQuery的事件綁定中,如果元素同時綁定了單擊事件(click)和雙擊事件(dblclick),那麽執行單擊事件(click)時,不會觸發雙擊事件(dblclick), 執行雙擊事件(dbl

WPF中如何將ListViewItem事件繫結到Command

原文: WPF中如何將ListViewItem雙擊事件繫結到Command 今天的部落格將介紹如何實現ListViewItem雙擊事件繫結到ViewModel中的Command。實現方法藉助了Style中的EventSetter,請看下面的詳細程式碼: <ListView ItemsSourc

winform listbox增加滑鼠事件

在Form.Designer.cs檔案中對於listBox處理:   listBox.MouseDoubleClick += new system。Windows.Forms.MouseEventHandler(listBox1_MouseDoubleClick);   在Form.cs程式碼

winform listbox增加鼠標事件

處理 事件處理 tar handler forms show from box sel 在Form.Designer.cs文件中對於listBox處理:   listBox.MouseDoubleClick += new system。Windows.Forms.Mouse

【小程式】小程式簡單實現事件

由於某個需求需要使用到雙擊事件,而小程式並沒有雙擊事件,so 雙擊事件其實就是兩次單擊的時間相差小於300ms 雙擊和單擊並存時的實現 doubleClick(e){ //e.timeStamp:當前點選時的毫秒數; // this.touchStartTime: 儲存上

dev GridView明細行實現事件

第一步:將gridview1.OptionsBehavior.Editable設為false第二步:在gridview1的MouseDown事件中寫以下程式碼privatevoidgridView1_MouseDown(objectsender, MouseEventArg

Android實現事件的監聽

今天寫專案時,要求仿微信朋友圈,雙擊頂欄置頂,於是封裝了雙擊回撥介面:/** * Created by Administrator on 2018/4/24. * 雙擊 */ public cl

js實現對Android裝置物理返回鍵單事件處理(Framework7框架)

單擊事件: //裝置返回鍵 document.addEventListener(“backbutton”, onBackKeyDown, false); function onBackKeyDown

cocos 觸控事件實現

在 Cocos2d-x的開發過程中有些時候也是需要用到雙擊的事件處理,那麼由於在cocos2d-x中沒有實現對雙擊的事件的處理,那麼我們就需要自己用程式碼實現。 下面介紹兩種方式實現雙擊事件的處理。 (一)方法一 第一種方法就是利用兩次touch之間

RxJava實現view的事件

public void doubleClickDetect(View view){ Observable<Void> observable = RxView.clicks(view).share(); observable.buf

WPF對ListView的ListViewItem新增事件

最近做了一個wpf的應用程式,其中主頁面是使用平鋪的卡片方式展示的,雙擊卡片的時候,可以開啟卡片相關的詳細。 問題出現了,在雙擊卡片的時候會崩潰,因為沒有選中任何卡片的時候,雙擊事件把整個DataView作為引數傳遞。 找到一個解決方案,就是隻對卡片設定雙擊事件,由於

android 實現button事件

最近在學習linux核心定時器,所以用類似定時器的方法實現按鈕的雙擊事件 public class MainActivity extends Activity {  private Handler handler = new Handler() {   @Override

事件失效解決辦法

dev out == pre clear win settime prev gettime 某些時候,雙擊事件會失效,模擬辦法解決雙擊失效後,而同時我又不想在該元素上觸發兩次單擊事件,解決辦法如下: var dbclickTime={ prev:0, next:0//模擬

Android中Button四種點事件實現方式

方法 instance break findview gin ins case tac 匿名內部類 1.Xml添加監聽屬性,這裏添加的doClick。 1 <Button 2 android:id="@+id/bt1" 3 andro

EasyUI中datagrid事件

mat url nbsp cli row lap idt center 雙擊 EasyUI中datagrid雙擊事件 <script type="text/javascript"> $(‘#tableworkbydaydata‘).datagrid({