[英]How to save WPF textbox value to variable
我试图制作一个基于WPF的程序,该程序将从用户控件读取文本框输入(用户输入)并将其保存为object
属性。 用户控件已添加到MainWindow
。 在MainWindow
,您有一个按钮,显示带有文本框值的消息框。 我不确定如何连接所有内容。
错误= CS0103名称'minJpValue'在当前上下文WpfApp1中不存在
请帮忙
(Usercontrol .xaml代码)
<TextBox x:Name="minJpValue"/>
(自定义课程)
public class jpData { public double minJpValue { get { return minJpValue; } set { minJpValue = value; } } }
(MainWindow .cs代码)
private void clickclick(object sender, RoutedEventArgs e) { MessageBox.Show(minJpValue); }
对于此快速修复,请使用:
MessageBox.Show(minJpValue.Text);
但是更好的方法是将值存储在VM
(视图模型)上,并使用MVVM模式将控件绑定到该值。 我提供了一个基本的例子
好吧,让我们了解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.