Действительно ли MVVM возможен/жизнеспособен в приложении RIA DHTML (никакой Silverlight/WPF)?

Я сделал это как это:

Загрузка шрифт:

- (void)loadFont{
  // Get the path to our custom font and create a data provider.
  NSString *fontPath = [[NSBundle mainBundle] pathForResource:@"mycustomfont" ofType:@"ttf"]; 
  CGDataProviderRef fontDataProvider = CGDataProviderCreateWithFilename([fontPath UTF8String]);

  // Create the font with the data provider, then release the data provider.
  customFont = CGFontCreateWithDataProvider(fontDataProvider);
  CGDataProviderRelease(fontDataProvider); 
}

Теперь, в Вашем drawRect:, сделайте что-то вроде этого:

-(void)drawRect:(CGRect)rect{
    [super drawRect:rect];
    // Get the context.
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextClearRect(context, rect);
    // Set the customFont to be the font used to draw.
    CGContextSetFont(context, customFont);

    // Set how the context draws the font, what color, how big.
    CGContextSetTextDrawingMode(context, kCGTextFillStroke);
    CGContextSetFillColorWithColor(context, self.fontColor.CGColor);
    UIColor * strokeColor = [UIColor blackColor];
    CGContextSetStrokeColorWithColor(context, strokeColor.CGColor);
    CGContextSetFontSize(context, 48.0f);

    // Create an array of Glyph's the size of text that will be drawn.
    CGGlyph textToPrint[[self.theText length]];

    // Loop through the entire length of the text.
    for (int i = 0; i < [self.theText length]; ++i) {
        // Store each letter in a Glyph and subtract the MagicNumber to get appropriate value.
        textToPrint[i] = [[self.theText uppercaseString] characterAtIndex:i] + 3 - 32;
    }
    CGAffineTransform textTransform = CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, 0.0);
    CGContextSetTextMatrix(context, textTransform);
    CGContextShowGlyphsAtPoint(context, 20, 50, textToPrint, [self.theText length]);
}

В основном необходимо сделать некоторое цикличное выполнение грубой силы через текст и futzing о с магическим числом для нахождения смещения (здесь, посмотрите, что я использую 29), в шрифте, но это работает.

кроме того, необходимо удостовериться, что шрифт юридически встраиваем. Большинство не и существуют адвокаты, которые специализируются на этом виде вещи, так быть предупрежденными.

17
задан Amir 9 November 2010 в 19:16
поделиться

2 ответа

Взгляните на функции привязки данных ASP.NET в .NET 4.0 - входит в Visual Studio 2010. Это именно то, что вы ищете, если вас устраивает технология MS.

Блог, в котором подробно описывается функция

Предварительный просмотр технологии сообщества на codeplex

Теоретически вы можете просто включить файл ASP.NET AJAX js из ваших HTML-файлов и сделайте решение кроссплатформенным.

Итак, чтобы прямо ответить на ваш вопрос - это абсолютно жизнеспособное решение проблемы создания поддерживаемых, слабо связанных веб-интерфейсов пользователя. И да, серверная часть вашего приложения делает меньше - она ​​становится более истинным сервисным слоем, где все, с чем она связана, - это обмен данными. На самом деле это хорошо, потому что это способствует повторному использованию среди клиентов. Представьте, что ваше приложение WPF и ваше веб-приложение используют один и тот же сервер среднего уровня для отправки / получения данных? В любом случае у клиентов есть много доступной вычислительной мощности - почему бы не использовать ее, чтобы сделать ваше решение более масштабируемым (чем меньше сервер делает, тем больше работы делают ваши клиенты, которая распределяется между ВСЕМИ клиентами)

Сложная часть - это двусторонняя привязка - когда вы подключаетесь к событию, что какой-то объект был изменен, и к событию, что что-то в пользовательском интерфейсе изменилось (например, пользователь что-то ввел в элемент управления вводом). Односторонняя привязка все равно будет полезна.

Похоже, что Microsoft - единственная компания, которая сейчас создает полное решение по той схеме, которую вы хотите. Библиотека Yahoo YUI действительно выполняет связывание данных, которое является полусогласованным, но не по той же схеме, что и WPF / Silverlight, как вы создали.

и событие, что что-то в пользовательском интерфейсе изменилось (например, пользователь ввел что-то в элемент управления вводом). Односторонняя привязка все равно будет полезна.

Похоже, что Microsoft - единственная компания, которая сейчас создает полное решение по тому шаблону, который вам нужен. Библиотека Yahoo YUI действительно выполняет связывание данных, которое является полусогласованным, но не по той же схеме, что и WPF / Silverlight, как вы создали.

и событие, что что-то в пользовательском интерфейсе изменилось (например, пользователь ввел что-то в элемент управления вводом). Односторонняя привязка все равно будет полезна.

Похоже, что Microsoft - единственная компания, которая сейчас создает полное решение по той схеме, которую вы хотите. Библиотека Yahoo YUI выполняет связывание данных, которое является полусогласованным, но не по той же схеме, что и WPF / Silverlight, как вы создали.

3
ответ дан 30 November 2019 в 14:17
поделиться

It looks possible and viable, with the only downside being that your code is relying on a whole lot of client side processing to get to the end result.

In my opinion, you're still a whole lot better of using a server side MVC architecture rather than trying to create a client side MVVM framework.

1
ответ дан 30 November 2019 в 14:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: