Control и вперед. Логика самого интерфейса вполне нормально живет в самих классах элементов управления (в терминах MVVM это два в одном View + ViewModel). Например, реальный случай из практики: запилил WF приложение по выданному дизайну - его потестили и почти сразу дизайнер нарисовал полностью новый дизайн; ввиду увеличения фишечек, рюшечек и всего остального (а так же тормозов древнего легаси наследия WF, конечно же) - я просто перенес файлы с логикой из WF проекта в WPF проект в модели и запилил новый GUI на WPF. как например из List там отобразить произвольное количество отрезков (именно со стороны XAML, впринципе если просто взять XY координаты точек и построить по ним линии со стороны VM то это без проблем, а вот как "заставить" эти линии отобразиться непосредственно на канвасе уже со стороны view - пока для меня не совсем понятно)
Resources
MyChart.xaml -> xaml разметка графика (контейнер с канвасом, легендой и прочее)
Views
MyChart.cs -> public class MyChart : Control // view - низкоуровневая логика самого контролла
MyChartCanvas.cs -> public class MyChart : Canvas // Тут реализуются методы рендеринга данных
VM
MyChartVM.cs -> тут высокоуровневая логика работы графика, переменные и прочее
Models
MyChartModel.cs -> тут логика расчета данных для графикаIf the function fails, the return value is zero. To get extended error information, call GetLastError. GetLastError returns ERROR_NOT_ENOUGH_QUOTA when the limit is hit.
1) Игра должна хранить информацию об игроке - друзья, предметы, скины (до 100)... Чтобы информация загружались при входе с почтой.
Бой. Игрок будет отправлять несколько значений другому игроку. Нужно, чтобы задержка была до 10 секунд, из любой точки мира. Враг не будет виден игроку, только его имя, рейтинг. Подбор противников по уровню. Бой пошаговый
Самое главное - чтобы игру было невозможно взломать.
Dictionary<string, Action> index = new Dictionary<string, Action>();
index["a.b.c"] = () => Console.WriteLine("a.b.c");
index["a.b.c"]();var tree = new MyTree() {
{
"a", new MyTree() {
{
"b", new MyTree(() => Console.WriteLine("a.b.c"))
}
}
}
}
tree["a.b"]();using System;
public class Program
{
delegate void MyFunc();
public static void FuncA(){
Console.WriteLine("FuncA");
}
public static void FuncB(){
Console.WriteLine("FuncB");
}
public static void Main()
{
MyFunc Func = FuncA;
Func();
Func = FuncB;
Func();
}
}FuncA
FuncB