How to say XAML <Button Height="Auto"/> in code behind?

autosize, c#, wpf, xaml

Solution

For setting `Height = "Auto"` on most controls, you want to assign the value with `double.NaN`.

Example:

element.Height = double.NaN;

Setting `Width/Height = "*"` ( is a slightly different matter, since it only applies to a select few elements (`ColumnDefinition` and `RowDefinition` for example). The type of the `Width`/`Height` value is `GridLength`, rather than `double`.

Example (more are given on this MSDN page:

column1.Width = new GridLength(1, GridUnitType.Auto); // Auto
column2.Width = new GridLength(1, GridUnitType.Star); // *

Problem

How can you set `Height="*"` and `Height="Auto"` in code behind?

Original source