代码之家  ›  专栏  ›  技术社区  ›  Eldar

如何从WPF中的非窗口类获取控制?

wpf
  •  0
  • Eldar  · 技术社区  · 14 年前

    应用程序.current.mainwindow。?

    2 回复  |  直到 13 年前
        1
  •  4
  •   Reed Copsey    14 年前

    如果控件位于应用程序的主窗口中,则很可能需要将其强制转换为适当的类型。例如,如果您的“主窗口”命名为 Window1 (默认命名),可以执行以下操作:

    Window1 myWindow = Application.Current.MainWindow as Window1;
    if (myWindow != null)
    {
         Button myButton = myWindow.button1; // Use your control here...
         myButton.IsEnabled = true; // Do something with the control here...
    }
    
        2
  •  2
  •   Major Malfunction Ram    13 年前

    另一个与上面Reed的回复非常相似的例子是,这里有一个事件处理程序(app.xaml.cs),它更新状态栏(mainwindow.xaml)中显示的文本:

    private void Control_GotFocus(object sender, RoutedEventArgs e)
    {
        // Do not select text for read-only text boxes.
        if ((sender is TextBox) && (!(sender as TextBox).IsReadOnly))
        {
            (sender as TextBox).SelectAll();
        }
    
        // Update status bar text to display control tag value.
        (Application.Current.MainWindow.FindName("statusBarTextBlock")
            as TextBlock).Text = (sender as Control).Tag.ToString();
    }