public void OnFunctionChanged(InputFunction Func)
 {
     if (Func == SelectedFunction)
     {
         Owner.BuildPlot();
     }
 }
        private void Button_ClickLoad(object sender, RoutedEventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
            openFileDialog.Title  = "Load Function";

            InputFunction InFunction = (InputFunction)Data.SelectedFunction;

            try
            {
                if (openFileDialog.ShowDialog() == true)
                {
                    using (StreamReader Reader = new StreamReader(openFileDialog.FileName))
                    {
                        NumberFormatInfo NFI = new NumberFormatInfo();
                        NFI.NumberDecimalSeparator = ".";

                        uint N = uint.Parse(Reader.ReadLine());
                        InFunction.FileData = new FunctionData(N);

                        for (int i = 0; i < N; ++i)
                        {
                            string[] TX = Reader.ReadLine().Split(' ');
                            double   T  = double.Parse(TX[0], NFI);
                            double   X  = double.Parse(TX[1], NFI);

                            if (T < 0 || (i > 0 && T <= InFunction.FileData.T[i - 1]))
                            {
                                throw new Exception();
                            }

                            InFunction.FileData.T[i] = T;
                            InFunction.FileData.X[i] = X;
                        }
                    }

                    InFunction.UseFile = true;
                }
            }
            catch
            {
                InFunction.FileData = new FunctionData();
                Data.LogString("Error when loading function!");
            }
        }