Ok, trzeba dać krótki wpis, bo mnie wywalą.
A więc zacznę od… opisania dość ważnej klasy w module do oceny ryzyka, przedstawiająca pojedynczą grupę ryzyka (bank ryzyk).
Ot, proste
public class RiskBank { public string Title; public List risks = new List(); }
Tytuł takiej grupy może w przyszłości ułatwić zarządzanie. Same ryzyka będą ciągami znaków, które będą mogły być wpisane z palca, pobrane z bazy, zarządzane, co tam sobie nie wymyślę w przyszłości. Zacznę więc od ładowania.
Na razie sobie wymyśliłam, że musimy mieć możliwość ładowania danych. Na razie to ogarnęłam jako prosty interfejs z jedną metodą.
public interface LoadingProvider { RiskBank loadRisks(object source); }
i zrobiłam przykładowy loader, który zakłada że jeśli plik jest tekstowy to sobie dodaje linijka po linijce, a jeżeli nie to się wywala ^^. No co, muszę mieć później co robić. Śmiećimplementacja interfejsu wygląda tak:
class TextfileLoader: LoadingProvider { public RiskBank loadRisks(object source) { if (source is string) { Encoding code; RiskBank bank = new RiskBank(); bank.Title = Path.GetFileNameWithoutExtension((string) source); string line; System.IO.StreamReader file = new System.IO.StreamReader((string)source); while ((line = file.ReadLine()) != null) { bank.risks.Add(line); } return bank; } else return null; } }
W przyszłości loading providery będą musiały mieć więcej funkcji niż jedna (dodawanie do podanej listy z duplikatami, dodawanie bez duplikatów, ładowanie elementów spełniających jakieś tam kryteria…, się zobaczy). Więc nie, nie pisałam interfejsu tylko po to, by gdzieś jedną funkcję wywołać;).
No i skoro już mamy to co mamy, to wrzuciłam na MainWindow sam podgląd.
W klasie MainWindow jest
public RiskBank list = new RiskBank(); private LoadingProvider loader;
i dalej jakiś onclick do buttona jako
private void Button_Click(object sender, RoutedEventArgs e) { loader = new TextfileLoader(); OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Multiselect = false; if (openFileDialog.ShowDialog() == true) list = loader.loadRisks(openFileDialog.FileName); SomeList.ItemsSource = list.risks; // }
Ok, wracam do pozostałych obowiązków;)