Как заставить Панель инструментов WPF связывать с набором в моем VM, не используя расширитель

Мой оптимальный язык много походил бы на Nemerle (минус произвольные ограничения). Действительно это сводится к средствам метапрограммирования; я должен смочь произвольно расшириться, или изменить язык всегда я считаю целесообразным (период) для установки домену отлично.

Дают мне макросы, которые позволяют мне работать над AST всего кода, как я желаю, и я могу создать мой идеальный язык.

5
задан Community 8 February 2017 в 14:16
поделиться

2 ответа

На панели инструментов есть ошибка, если вы измените размер окна, проблема исчезнет.

Решение заключается в использовании другого элемента управления, например:

public class WorkaroundToolBar : ToolBar
{
    private delegate void IvalidateMeasureJob();

    public override void OnApplyTemplate()
    {
        Dispatcher.BeginInvoke(new IvalidateMeasureJob(InvalidateMeasure), 
                                     DispatcherPriority.Background, null);
        base.OnApplyTemplate();
    }
}

Просмотрите этот поток для получения дополнительной информации

4
ответ дан 14 December 2019 в 13:41
поделиться

Согласно спецификации, DecimalLiteral определяется как

DecimalLiteral ::
    DecimalIntegerLiteral . DecimalDigitsopt ExponentPartopt 
    . DecimalDigits ExponentPartopt 
    DecimalIntegerLiteral ExponentPartopt

и для удовлетворения аргумента parseFloat:

  1. Пусть inputString является ToString (string).
  2. Пусть trimmedString является подстрокой inputString, состоящей из крайнего левого символа, который не является StrWhiteSpaceChar, и всех символов справа от этого символа. (Другими словами, удалите ведущее пустое пространство.)
  3. Если ни trimmedString, ни какой-либо префикс trimmedString не удовлетворяет синтаксису StrDecimalLiteral (см. 9,3,1
  4. Пусть numberString является самым длинным префиксом trimmedString, который может быть самой trimmedString, удовлетворяющей синтаксису StrDecimalLiteral.
  5. Возвращает значение Number для MV

Таким образом, numberString становится самым длинным префиксом trimmedString, удовлетворяющим синтаксису StrDecimalLiteral, что означает первый разборчивый номер последовательности литерала, найденный на входе. Только . может использоваться для указания числа с плавающей запятой. Если вы принимаете входные данные из разных языковых стандартов, используйте последовательность:

function parseLocalNum(num) {
    return +(num.replace(",", "."));
}

Функция использует унарный оператор вместо parseFloat, потому что мне кажется, что вы хотите быть строгим к входным данным. parseFloat («1ABC») будет 1 , тогда как использование унарного оператора + «1ABC» возвращает NaN . Это ЗНАЧИТЕЛЬНО упрощает проверку входных данных. Использование parseFloat просто предполагает, что входные данные находятся в правильном формате.

-121--1149297-

Вероятно, вместо более старой платформы WDM следует использовать недавно созданную рамку Windows Driver Foundation (WDF). Хорошей отправной точкой является чтение документов WDF Overview Word .

Если вы хотите прочитать книгу, «Разработка драйверов с помощью Windows Driver Foundation» - это та, которую вы ищете.

-121--2160881-

Вы также можете установить высоту панели инструментов в xaml на разумное значение, которое сработало для меня.

1
ответ дан 14 December 2019 в 13:41
поделиться
Другие вопросы по тегам:

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