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;)