繁体   English   中英

如何将WPF文本框值保存到变量

[英]How to save WPF textbox value to variable

我试图制作一个基于WPF的程序,该程序将从用户控件读取文本框输入(用户输入)并将其保存为object属性。 用户控件已添加到MainWindow MainWindow ,您有一个按钮,显示带有文本框值的消息框。 我不确定如何连接所有内容。

错误= CS0103名称'minJpValue'在当前上下文WpfApp1中不存在

请帮忙

  1. (Usercontrol .xaml代码)

     <TextBox x:Name="minJpValue"/> 
  2. (自定义课程)

     public class jpData { public double minJpValue { get { return minJpValue; } set { minJpValue = value; } } } 
  3. (MainWindow .cs代码)

     private void clickclick(object sender, RoutedEventArgs e) { MessageBox.Show(minJpValue); } 

对于此快速修复,请使用:

 MessageBox.Show(minJpValue.Text);

但是更好的方法是将值存储在VM (视图模型)上,并使用MVVM模式将控件绑定到该值。 我提供了一个基本的例子

Xaml:ViewModel主页实例化和加载策略,用于更轻松的绑定

好吧,让我们了解wt你做错了。

<TextBox Name="minJpValue"/>

这行代码将为TextBox创建一个对象,并且该对象将使用您的名字minJpValue进行引用,因为您提到这将在另一个Usercontrol对象内,并且您尝试在MainWindow使用minJpValue怎么知道它像minJpValue这样的存在

所以这是答案:

objjpData.minJpValue = minJpValue.Text;//Inside user control when ever u change the `minJpValue` u need to set it too bjjpData.minJpValue

将此objjpData传递到mainwindow或objjpData要访问的地方

MessageBox.Show(objjpData.minJpValue);

选项2: MessageBox.Show(UserControlObject.minJpValue.Text);

和PS:一次检查MVVM

可以使用MVVM模式轻松解决此问题。usercontrol的代码将与此类似

<Grid Background="Red">
    <TextBox x:Name="minJpValue" Text="{Binding Path=minJpValue}" />
</Grid>

为MainWindow创建新的ViewModel,如下所示

public class MainWindowViewModel : INotifyPropertyChanged
{
    /// <summary>
    /// Property Changed Event Handler
    /// </summary>
    public event PropertyChangedEventHandler PropertyChanged;

    // Create the OnPropertyChanged method to raise the event
    protected void OnPropertyChanged(string name)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(name));
        }
    }
   private String _minJpValue;
    public String minJpValue {
        get { return _minJpValue; }
        set {
            _minJpValue = value;
            OnPropertyChanged(nameof(minJpValue));
        }
    }

}

将用户控件添加到您的MainWindow视图中,并在后面的代码中将datacontext设置为ViewModel,如下所示

 public MainWindowViewModel CurrentModel = new MainWindowViewModel();

    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = CurrentModel;
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show(CurrentModel.minJpValue);
    }

这样可以解决您当前的问题。 请查看其是否按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM