C# WPF - GridLength GridUnitType.Auto

Может кто-нибудь объяснить разницу между использованием:

 GridLength length = new GridLength(0, GridUnitType.Auto) 

а также

 GridLength length = new GridLength(1, GridUnitType.Auto)

Мое ограниченное знание этого приводит меня к убеждению, что оба они будут идентичными решениями из-за того, что auto означает "auto", что делает излишним двойное значение.

Большинство примеров, которые я видел, показывают GridUnitType.Auto предшествует 1, а не 0, но мне кажется, что любой из вариантов работает одинаково?

Это тот случай, или кто-то может пролить свет на то, если / как они отличаются

1 ответ

Решение

Я думаю, что ваше понимание верно, когда значение GridUnitType.Auto используется, первое значение, переданное конструктору, является избыточным, так как размер будет определяться объектом содержимого.

Это имеет некоторый смысл в контексте GridLength конструктор структуры, чтобы сохранить этот параметр (даже если он не используется в данном случае), так как он позволяет второму типу параметра содержать значения, которые описывают все доступные состояния GridUnitType,

Из документации:

Перечислимый тип GridUnitType может содержать следующие значения:

Auto   - The size is determined by the size properties of the content object. 
Pixel  - The value is expressed as a pixel. 
Star   - The value is expressed as a weighted proportion of available space. 

Так что действительно, первый параметр имеет значение только тогда, когда второй параметр установлен на GridUnitType.Pixel или же GridUnitType.Star,

Это не сработало бы иначе, например, если бы вы попытались получить конструктор, который принял бы 1 параметр как GridUnitTypeи требуется только второй параметр, если вы использовали Pixel или же Star,

Таким образом, вы получаете преимущество, когда у вас есть конструктор с одним параметром, который принимает значение типа double без указания дополнительного типа. Хотя он имеет стоимость потенциально странно выглядящего двухпараметрического конструктора при использовании Auto (как в вашем примере).

Другие вопросы по тегам