Filepath не найден за пределами окна WPF - PullRequest
0 голосов
/ 13 мая 2019

Я использую следующую карту мира в моем приложении WPF: https://lvcharts.net/App/examples/v1/wpf/GeoHeatMap

//Geomap 
private static string GEOMAP_PATH = System.IO.Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory) + "\\Materials\\GeoMaps\\World.xml";

public MainMaterialWindow()
        {
            //Default application initialization
            InitializeComponent();

            //geomap chart
            var values = new Dictionary<string, double>();
            foreach (actual_headmapdata data in GetWorldHeadmapData())
            {
                values[data.isocode] = data.count;
            }

            geoMap1.HeatMap = values;
            var lang = new Dictionary<string, string>();
            lang["DE"] = "Germany"; // change the language if necessary
            geoMap1.LanguagePack = lang;
            geoMap1.Source = GEOMAP_PATH;

        }

Я не понимаю, почему путь к файлу не найден, если я делаю что-то подобное.

//Geomap 
private static string GEOMAP_PATH = System.IO.Path.GetDirectoryName(System.AppDomain.CurrentDomain.BaseDirectory) + "\\Materials\\GeoMaps\\World.xml";

public MainMaterialWindow()
        {
            //Default application initialization
            InitializeComponent();
            //init GeoMap
            initGeoMap();
        }


public void initGeoMap() {

         //geomap chart
            var values = new Dictionary<string, double>();
            foreach (actual_headmapdata data in GetWorldHeadmapData())
            {
                values[data.isocode] = data.count;
            }

            geoMap1.HeatMap = values;
            var lang = new Dictionary<string, string>();
            lang["DE"] = "Germany"; // change the language if necessary
            geoMap1.LanguagePack = lang;
            geoMap1.Source = GEOMAP_PATH;
            }

Я получаю: System.IO.FileNotFoundException: «Этот файл не был найден».

Итак, проблема в том, почему путь к файлу больше не действителен, если инициализация географической карты находится за пределами MainMaterialWindow().Файл по-прежнему завершается.

XAML:
<lvc:GeoMap x:Name="geoMap1" HeatMap="{Binding Values}" LanguagePack="{Binding LanguagePack}" Margin="10,0,-12,22" />

То же самое происходит с полным путем к файлу в виде строки: GEOMAP_PATH="D:\\Dev\\projectname\\bin\\debug\\Materials\\GeoMaps\\World.xml"

Это также работает только в MainMaterialWindow (), поэтому речь не идет о:

частная статическая строка GEOMAP_PATH = System.IO.Path.GetDirectoryName (System.AppDomain.CurrentDomain.BaseDirectory)

...