<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MVVM模式下WPF動態綁定展示圖片

        來源:懂視網 責編:小采 時間:2020-11-27 22:35:34
        文檔

        MVVM模式下WPF動態綁定展示圖片

        MVVM模式下WPF動態綁定展示圖片:MVVM模式下WPF動態展示圖片,界面選擇圖標,復制到項目中固定目錄下面,保存到數據庫的是相對路徑,再次讀取的時候是根據數據庫的相對路徑去獲取項目中絕對路徑的圖片展示。 首先在ViewModel中 //屬性定義 BitmapImage _ImageSource; ///
        推薦度:
        導讀MVVM模式下WPF動態綁定展示圖片:MVVM模式下WPF動態展示圖片,界面選擇圖標,復制到項目中固定目錄下面,保存到數據庫的是相對路徑,再次讀取的時候是根據數據庫的相對路徑去獲取項目中絕對路徑的圖片展示。 首先在ViewModel中 //屬性定義 BitmapImage _ImageSource; ///

        MVVM模式下WPF動態展示圖片,界面選擇圖標,復制到項目中固定目錄下面,保存到數據庫的是相對路徑,再次讀取的時候是根據數據庫的相對路徑去獲取項目中絕對路徑的圖片展示。

        首先在ViewModel中

        //屬性定義
         BitmapImage _ImageSource;
         /// <summary>
         /// 顯示的圖標
         /// </summary>
         public BitmapImage ImageSource
         {
         get { return _ImageSource; }
         set
         {
         _ImageSource = value;
         NotifyOfPropertyChange("ImageSource");
         }
         }
        
         string _ImagePath;
         /// <summary>
         /// 顯示的圖標路徑
         /// </summary>
         public string ImagePath
         {
         get { return _ImagePath; }
         set
         {
         _ImagePath = value;
         NotifyOfPropertyChange("ImagePath");
         }
         }
        
        
        //初始化數據
        //編輯的時候綁定數據
        public GroupInfoViewModel(sys_Right_Group groupInfo, OperType type)
         {
         if (type == OperType.Edit || type == OperType.Show)
         {
         IsAdd = false;
         TitleName = "編輯分組";
         RightGroup = groupInfo;
         ImagePath = groupInfo.ImagePath; 
         GetImgData(groupInfo.ImagePath);
         }
         }
         /// <summary>
         /// 獲取圖片數據
         /// </summary>
         /// <param name="imgPath">相對路徑</param>
         private void GetImgData(string imgPath)
         {
         if (string.IsNullOrEmpty(imgPath)) return;
         try
         {
         
         string fileName = System.Environment.CurrentDirectory + imgPath; //獲取文件的絕對路徑
         byte[] buf;
         if (!PathToByte(fileName, out buf))
         {
         MessageHelper.ShowAutoCloseWarning("獲取圖標失敗");
         return;
         }
         ImageSource =ByteToImage(buf);
         }
         catch (Exception ex)
         {
         throw ex;
         }
         }
        
        //界面選擇圖片按鈕事件
         /// <summary>
         /// 修改圖片
         /// </summary>
         public void ChangedIcon()
         {
         try
         {
         OpenFileDialog open = new OpenFileDialog();
         open.Filter = string.Format("照片|*.jpg;*.jpeg;*.png;*.gif;*.bmp");
         if (open.ShowDialog() == true)
         {
         var path = open.FileName;
         //檢查圖標目錄,絕對路徑下面
         string NewPath = System.Environment.CurrentDirectory + @"\Images\Tile\Group\";
         string newFile = NewPath + Path.GetFileName(path);
         if (!System.IO.Directory.Exists(NewPath))
         {
         System.IO.Directory.CreateDirectory(NewPath);
         }
         File.Copy(path, newFile, true); //復制文件到目錄絕對路徑文件夾
         FileInfo info = new FileInfo(newFile); //新文件
         if (info.Length > MenuViewModel.UserImageMaxLength)
         {
         MessageHelper.ShowAutoCloseWarning(string.Format("圖標不能大于{0}M",
         MenuViewModel.UserImageMaxLength / 1024 / 1024));
         return;
         }
         byte[] buf;
         if (!PathToByte(path, out buf))
         {
         MessageHelper.ShowAutoCloseWarning("修改失敗");
         return;
         }
         ImageSource = ByteToImage(buf);
         ImagePath = @"\Images\Tile\Group\" + Path.GetFileName(path); //顯示相對路徑
        
         }
         }
         catch (Exception ex)
         {
        
         throw ex;
         }
         }
        
        

        點擊保存的時候再把相對路徑保存到數據庫RightGroup.ImagePath = ImagePath;

        //公共幫助方法
        
        //把圖片文件轉換為byte數組
         public static bool PathToByte(string path, out byte[] buffer)
         {
         FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
         try
         {
         buffer = new byte[fs.Length];
         fs.Read(buffer, 0, (int)fs.Length);
         return true;
         }
         catch (Exception ex)
         {
         buffer = null;
         return false;
         }
         finally
         {
         if (fs != null)
         {
         //關閉資源 
         fs.Close();
         }
         }
         
         }
        
        //把byte數組轉化為BitmapImage 
         public static BitmapImage ByteToImage(byte[] buf)
         {
         BitmapImage bmp = new BitmapImage();
         bmp.BeginInit();
         bmp.StreamSource = new MemoryStream(buf);
         bmp.EndInit();
        
         return bmp;
         }
        
        

        View 界面綁定代碼:

        <Button Grid.Row="0" Grid.Column="0" Content="選擇圖片" cm:Message.Attach="[Click]=[ChangedIcon()]" Style="{StaticResource BtnOperationStyle}" Height="20" Width="70"></Button>
         <Grid Grid.Row="0" Grid.Column="1" Background="LightGray">
         <Image Height="120" Width="150" Stretch="Fill" Source="{Binding ImageSource,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></Image>
         </Grid>
         <Label Grid.Row="1" Grid.Column="0" Style="{StaticResource GridColumnLabelStyle}" Content="路徑:"></Label>
        <TextBox Grid.Row="1" Grid.Column="1" Style="{StaticResource StyleForTextBox}" Text="{Binding ImagePath,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Height="30" TextAlignment="Center" IsReadOnly="True"></TextBox>

        界面效果:

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        MVVM模式下WPF動態綁定展示圖片

        MVVM模式下WPF動態綁定展示圖片:MVVM模式下WPF動態展示圖片,界面選擇圖標,復制到項目中固定目錄下面,保存到數據庫的是相對路徑,再次讀取的時候是根據數據庫的相對路徑去獲取項目中絕對路徑的圖片展示。 首先在ViewModel中 //屬性定義 BitmapImage _ImageSource; ///
        推薦度:
        標簽: 圖片 添加 綁定
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲色偷偷偷综合网| 77777_亚洲午夜久久多人| 亚洲国产精品无码久久| 国产又大又粗又长免费视频| 亚洲三级电影网站| 国产免费AV片在线观看| 亚洲国产精品福利片在线观看| 成人A毛片免费观看网站| 国产AV无码专区亚洲AV毛网站 | 成人性生交大片免费看无遮挡| 亚洲人成免费网站| 成年女人色毛片免费看| 亚洲精品自偷自拍无码| 国产乱子伦精品免费无码专区| 国产91成人精品亚洲精品| 四虎精品亚洲一区二区三区| 无码的免费不卡毛片视频| 亚洲精品成人片在线观看精品字幕 | 国产大片91精品免费观看男同| 成人特级毛片69免费观看| 中文字幕亚洲一区二区三区| 久久大香香蕉国产免费网站| 亚洲日本在线播放| 成人免费无码精品国产电影| 成人a毛片免费视频观看| 亚洲AV人人澡人人爽人人夜夜| 四虎1515hh永久久免费| 亚洲Av无码国产一区二区| 亚洲色欲久久久久综合网| 亚欧日韩毛片在线看免费网站| 亚洲av无码专区在线| 国产伦精品一区二区三区免费下载 | 久久精品国产亚洲AV麻豆不卡| 2015日韩永久免费视频播放| 亚洲欧美熟妇综合久久久久| 亚洲精品专区在线观看| 最近中文字幕mv免费高清在线| 亚洲av日韩av永久无码电影 | 亚洲精彩视频在线观看| 在线免费不卡视频| 最近中文字幕免费大全|