成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

MVVM模式下如何實(shí)現(xiàn)WPF動(dòng)態(tài)展示圖片-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)MVVM模式下如何實(shí)現(xiàn)WPF動(dòng)態(tài)展示圖片,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)公司專注于靖州企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城網(wǎng)站建設(shè)。靖州網(wǎng)站建設(shè)公司,為靖州等地區(qū)提供建站服務(wù)。全流程按需制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

MVVM模式下WPF動(dòng)態(tài)展示圖片,界面選擇圖標(biāo),復(fù)制到項(xiàng)目中固定目錄下面,保存到數(shù)據(jù)庫的是相對(duì)路徑,再次讀取的時(shí)候是根據(jù)數(shù)據(jù)庫的相對(duì)路徑去獲取項(xiàng)目中絕對(duì)路徑的圖片展示。

首先在ViewModel中

//屬性定義
    BitmapImage _ImageSource;
    /// <summary>
    /// 顯示的圖標(biāo)
    /// </summary>
    public BitmapImage ImageSource
    {
      get { return _ImageSource; }
      set
      {
        _ImageSource = value;
        NotifyOfPropertyChange("ImageSource");
      }
    }

    string _ImagePath;
    /// <summary>
    /// 顯示的圖標(biāo)路徑
    /// </summary>
    public string ImagePath
    {
      get { return _ImagePath; }
      set
      {
        _ImagePath = value;
        NotifyOfPropertyChange("ImagePath");
      }
    }
//初始化數(shù)據(jù)
//編輯的時(shí)候綁定數(shù)據(jù)
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>
    /// 獲取圖片數(shù)據(jù)
    /// </summary>
    /// <param name="imgPath">相對(duì)路徑</param>
    private void GetImgData(string imgPath)
    {
      if (string.IsNullOrEmpty(imgPath)) return;
      try
      {
        
        string fileName = System.Environment.CurrentDirectory + imgPath; //獲取文件的絕對(duì)路徑
        byte[] buf;
        if (!PathToByte(fileName, out buf))
        {
          MessageHelper.ShowAutoCloseWarning("獲取圖標(biāo)失敗");
          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;
          //檢查圖標(biāo)目錄,絕對(duì)路徑下面
          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); //復(fù)制文件到目錄絕對(duì)路徑文件夾
          FileInfo info = new FileInfo(newFile); //新文件
          if (info.Length > MenuViewModel.UserImageMaxLength)
          {
            MessageHelper.ShowAutoCloseWarning(string.Format("圖標(biāo)不能大于{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); //顯示相對(duì)路徑

        }
      }
      catch (Exception ex)
      {

        throw ex;
      }
    }

點(diǎn)擊保存的時(shí)候再把相對(duì)路徑保存到數(shù)據(jù)庫RightGroup.ImagePath = ImagePath;

//公共幫助方法

//把圖片文件轉(zhuǎn)換為byte數(shù)組
 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)
        {
          //關(guān)閉資源  
          fs.Close();
        }
      }
      
    }

//把byte數(shù)組轉(zhuǎn)化為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>

界面效果:

MVVM模式下如何實(shí)現(xiàn)WPF動(dòng)態(tài)展示圖片

關(guān)于“MVVM模式下如何實(shí)現(xiàn)WPF動(dòng)態(tài)展示圖片”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享題目:MVVM模式下如何實(shí)現(xiàn)WPF動(dòng)態(tài)展示圖片-創(chuàng)新互聯(lián)
當(dāng)前URL:http://jinyejixie.com/article2/jshoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司、營銷型網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司企業(yè)建站、響應(yīng)式網(wǎng)站、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
祁连县| 肃北| 德江县| 阳高县| 夏津县| 固镇县| 邢台县| 兴仁县| 鄂温| 若羌县| 太保市| 工布江达县| 高密市| 柳林县| 工布江达县| 云阳县| 泰顺县| 长岭县| 八宿县| 清镇市| 金山区| 石渠县| 东乌珠穆沁旗| 张家港市| 万源市| 舒兰市| 汤阴县| 景泰县| 景德镇市| 西贡区| 桦川县| 恩施市| 小金县| 泌阳县| 开阳县| 丰都县| 夹江县| 绩溪县| 莒南县| 左云县| 皋兰县|