从UserWtrol中的MainWindow访问TextBox内容

时间:2012-08-28 13:27:11

标签: c# wpf class get set

我真的在努力成为一名新手程序员...这一切都是在WPF中完成的

我的MainWindow中有三个文本框。

将值返回到这些文本框的方法已公开(并且在MainWindow中)。下面是三个文本框中的一个。

 public float GetLEL()
    {
        bool LEL = false;
        float parsedLELValue = 0;
        LEL = float.TryParse(LEL_TextBox.Text, out parsedLELValue);
        return parsedLELValue;
    }

如何将此值按原样返回到我的usercontrol类中,即使它发生了变化?

我尝试了各种各样的操作,比如在Usercontrol中创建一个实例(没有用过) -

Application app = new Application();


private float GetNewLEL()
        {
            float parsedNewLELValue = 0.00F;
            bool NewLEL = false;
            if (HolidayPay_CheckBox.IsChecked == false)
            {
                NewLEL = float.TryParse(app.GetHPR().ToString, out parsedNewLELValue);
            }

            else if (HolidayPay_CheckBox.IsChecked == true)
            {
                parsedNewLELValue = 0.00F;
            }

            return parsedNewLELValue;

        }

但是,Usercontrol中的实例未在MainWindow中找到GetLEL()方法。有人可以请帮助。其他人建议Get和Set,但我不知道如何做到这一点。

1 个答案:

答案 0 :(得分:0)

我试图重现我理解你想要实现的东西;如果您对此代码有任何疑问,我很乐意回答。

MainWindow.xaml:

<Window x:Class="WpfApplication16.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <StackPanel>
            <CheckBox IsChecked="{Binding MySuperCheckBoxIsChecked}" />

            <TextBox Text="{Binding MySuperFloatValue}" />

            <Button Click="Button_Click">Click me !</Button>

            <TextBlock x:Name="MySuperTextBlock"/>
        </StackPanel>
    </Grid>
</Window>

MainWindows.xaml.cs:

using System.Windows;

namespace WpfApplication16
{
    public partial class MainWindow : Window
    {
        private MySuperDataContextClass _mySuperDataContextClass = 
                                           new MySuperDataContextClass();

        public MainWindow()
        {
            InitializeComponent();

            this.DataContext =_mySuperDataContextClass;
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (_mySuperDataContextClass.MySuperCheckBoxIsChecked)
            {
                MySuperTextBlock.Text = 
                   _mySuperDataContextClass.MySuperFloatValue.ToString();
            }
            else
            {
                MySuperTextBlock.Text = 0.0f.ToString();
            }
        }
    }
}

MySuperDataContextClass.cs:

using System.ComponentModel;

namespace WpfApplication16
{
    public class MySuperDataContextClass : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        private bool _mySuperCheckBoxIsChecked;
        private float _mySuperFloatValue;

        public bool MySuperCheckBoxIsChecked
        {
            get { return _mySuperCheckBoxIsChecked; }

            set 
            {
                _mySuperCheckBoxIsChecked = value;

                if (this.PropertyChanged != null)
                {
                    this.PropertyChanged(this,
                     new PropertyChangedEventArgs("MySuperCheckBoxIsChecked"));
                }
            }
        }

        public float MySuperFloatValue
        {
            get { return _mySuperFloatValue; }

            set 
            { 
                _mySuperFloatValue = value;

                if (this.PropertyChanged != null)
                {
                    this.PropertyChanged(this,
                     new PropertyChangedEventArgs("MySuperFloatValue"));
                }
            }
        }
    }
}