簡體   English   中英

如何從XAML應用程序中的相對URI獲取所有文件列表?

[英]How to get all files list from a relative URI in XAML application?

如何使用相對路徑從XAML應用程序中的文件夾中獲取所有文件?

我正在玩一個內置在WPF中的Kinect應用程序。 應用程序中使用的所有圖像都在[project dir]\\Images\\ ,所有背景都在[project dir]\\Images\\Backgrounds\\

我想使用相對路徑從Backgrounds目錄中獲取所有圖像的列表。 我努力了

DirectoryInfo(@"\Images\Backgrounds\").GetFiles();

但它說背景目錄必須存在於[full path+project dir]\\debug\\bin\\

手動選擇每個圖像工作正常

Uri uri = new Uri(@"Images\Backgrounds\Background1.png", UriKind.Relative);
ImageSource imgsource = new BitmapImage(uri);
this.Backdrop.Source = imgsource;

它適用於單個文件,因為您指定了嵌入在程序集中的資源的URI而不是驅動器上的某個文件夾,而GetFiles()僅適用於特定的物理文件夾。 因此,您需要復制所有圖像而不是嵌入它們或使用下面的代碼, resourceNames應該為您提供項目中URI可以引用的所有資源的名稱:

List<string> resourceNames = new List<string>();
var assembly = Assembly.GetExecutingAssembly();
var rm = new ResourceManager(assembly.GetName().Name + ".g", assembly);
try
{
    var list = rm.GetResourceSet(CultureInfo.CurrentCulture, true, true);
    foreach (DictionaryEntry item in list)
        resourceNames.Add((string)item.Key);
}
finally
{
    rm.ReleaseAllResources();
}

如果你需要,那么每個item.Value包含每個資源的UnmanagedMemoryStream

我會回復你的帖子,而不是發布一個解決方案,但我是這個網站的新手,還沒有那個權利......嘿! 只是想幫忙。

無論如何,我之前遇到過與DirectoryInfo類似的問題。 不記得我是怎么解決它的,但我記得反斜杠很棘手。 你檢查過MSDN網站了嗎? 它似乎無法找到您的目錄,因此它默認在調試中查找它。 MSDN說格式應該是C#中的“MyDir \\ MySubdir”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM