Почему в конструкторе элемента UI значение Width равно NaN в WPF? Как можно задать размер элемента из XML разметки?

Как можно правильно передать размеры элемента Canvas в конструктор класса Game, чтобы избежать проблемы с возвращением NaN, при этом избегая повторного ввода констант?
  • 15 декабря 2023 г. 1:26
Ответы на вопрос 1
Значение Width равно NaN в конструкторе элемента UI, потому что на этом этапе еще не произошла расстановка и измерения элементов на экране. Размер элемента устанавливается в процессе последующей расстановки и расчета размеров элементов в WPF.

Чтобы задать размер элемента из XML разметки, можно использовать атрибуты Width и Height в XAML. Например:

```xml
<Canvas Width="200" Height="150">
    ...
</Canvas>
```

Теперь, касательно передачи размеров элемента Canvas в конструктор класса Game. Можно воспользоваться свойствами ActualWidth и ActualHeight после расстановки элементов на экране. В конструкторе класса Game создайте параметры width и height и передайте их туда:

```csharp
public class Game
{
    public Game(double width, double height)
    {
        // Ваш код
    }
}

public partial class MainWindow : Window
{
    private Game game;

    public MainWindow()
    {
        InitializeComponent();

        game = new Game(Canvas.ActualWidth, Canvas.ActualHeight);
    }
}
```

Таким образом, передавая параметры ActualWidth и ActualHeight в конструктор класса Game, вы можете получить актуальные размеры элемента Canvas и избежать проблемы с возвращением NaN.
Похожие вопросы