我可以将 InitializeComponent() 移动到 Loaded()

Can I move InitializeComponent() to Loaded()

依赖项属性 setter 未在应用程序构造函数中调用,值仅在加载用户控件后可用。那么,将 InitializeComponent() 方法移动到 Loaded() 方法是否安全?

InitializeComponent() 保留在原处。相反,请使用 Loaded 事件。即

  [Dependency]
  public Foo Foo { get; set; }

  public MainWindow()
        {
            InitializeComponent();

            Loaded += MainWindow_Loaded;
        }

  private void MainWindow_Loaded(object sender, System.Windows.RoutedEventArgs e)
        {
            // Propery injection should have taken place now, so do what you need to do with them
        }

我不知道这是否有助于解决您的问题,但我只是让 VisualStateManger 转到加载事件中的当前状态:

    private void OnLoaded(object sender, RoutedEventArgs routedEventArgs)
    {
        VisualStateManager.GoToState(this, YourStateGroup.CurrentState.Name, false);
    }