Значение 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.