2017-04-22 15 views
0

Windowsエクスプローラのプロジェクトフォルダ "画像"に画像をアップロードできますが、プロジェクト "画像"フォルダにはアップロードできません。 (実行中の.exeとVisual Studioが閉じているとき)WPF MVVMコンピュータからプロジェクトフォルダに画像をアップロードし、リソースとしてビルドアクションを設定

イメージをプロジェクトにコピーし、リソースに「ビルドアクション」を設定し、「コピーに出力」を常にコピーに設定します。

なぜですか? 私のプログラム(.exe)が実行されていて(Visual Studioが実行されていない)、メインウィンドウに画像が表示されています。私はボタン "画像をアップロード"を持っています。ユーザーがイメージをアップロードすると、メインウィンドウに表示されなければなりません。画像は綴じで表示されます。 AnyBodyは私を助けることができますか?

メインウィンドウ:(正常に動作します... "Afbeeldingは" "abc.jpg" のようなイメージの名前です)

<Button DataContext="{Binding Source={StaticResource mainViewModelLocator}, Path=MainWindowViewModel}" Command="{Binding AlgorithmActiefCommand}" CommandParameter="{Binding Content, ElementName=ollId}" Background="Transparent" BorderBrush="Transparent" Style="{StaticResource ButtonAsImage}"> 
    <Image Source="{Binding Text, ElementName=image}" MaxHeight="65" MaxWidth="65" /> 
</Button> 

のViewModel:uploadImageボタンが押されたときに "LoadImage" 機能を開始します。

public void LoadImage() 
{ 
//upload image 
OpenFileDialog _importAfbeelding = new OpenFileDialog(); 
_importAfbeelding.Title = "Selecteer een afbeelding"; 

if (_importAfbeelding.ShowDialog() == true) 
{ 
    var _afbeelding = new BitmapImage(new Uri(_importAfbeelding.FileName)); 
    ImportPath = _importAfbeelding.FileName; 
    string[] _padGesplitst = _importPath.Split('\\'); 
    ImportNaam = _padGesplitst[(_padGesplitst.Length - 1)]; 
    string _destinationFullPath = System.AppDomain.CurrentDomain.BaseDirectory; 
    DestinationPath = _destinationFullPath.Remove(_destinationFullPath.Length -10) + "images\\OLL\\"+ ImportNaam; 
} 
try 
{ 
    File.Copy(ImportPath, this.DestinationPath, true); 
    MessageBox.Show("Your images is added with name: " + ImportNaam); 
} 
catch 
{ 
    MessageBox.Show("Unable to open file "); 
} 
} 

は今、私は私の「イメージ」のマップにWindowsエクスプローラでイメージを持っている...しかし、何も私のプロジェクトに示されていません。名前は、MainWindowのバインディングの "Afbeelding"としてデータベースに保存されます。しかし、何も表示されていません。

画像が既にimagesフォルダにあるMainWindow。最後は何のイメージもない。それが私がアップロードボタンで追加したものです。 enter image description here

これは、(「ブラウズ」)アップロード画像ボタンで enter image description here

今ではWindowsエクスプローラにありますが、また、Visual Studioの再起動後にメインウィンドウ enter image description here

にバインドして示されていません...プロジェクトには表示されません。 enter image description here

イメージはバインディングで表示され、名前は正しくdatに保存されていますabase enter image description here

私はここで間違っていますか?ありがとうございます

+0

ビルドアクションはビルドアクションです。アプリケーションがコンパイルされた後、*実行時に任意のファイルのビルドアクションを設定することはできません。 –

+0

Visual Studioでプロジェクトにイメージファイルを追加しますか? https://blogs.msdn.microsoft.com/benwilli/2015/05/21/visual-studio-tip-8-adding-existing-files-with-show-all-files/ – kirodge

+0

Paul Abbott、はい、意味があります。 キロッジ、はい、それは私が試しているものですが、私がVisual Studioにいるときはそうではありません! exeが実行されると、Visual Studioが開かれていなくても、 –

答えて

0

私は最終的に私が共有したいソリューションを見つけました。 まず、画像をアップロードする場所を変更しました。それから私は、そのフォルダに画像をコピーし enter image description here

enter image description here

そして、画像を表示することが困難であった私は、デバッグフォルダに今それをアップロードします。 最初に私はViewModelにパスを定義した: enter image description here

を次に、あなたのイメージソース(パス+ imagenameの)ために正しい文字列を構築: enter image description here

最後に、それは働きました!実行中のプログラムで画像をアップロードして使用したいと思っている人に役立つことを願っています。

関連する問題