Acceda al contenido de TextBox desde MainWindow en un control de usuario
Frecuentes
Visto 1,222 veces
1
Estoy realmente luchando aquí siendo un programador novato... Por cierto, todo esto se ha hecho en WPF
Tengo tres cuadros de texto en mi MainWindow.
El método que devuelve los valores a estos cuadros de texto se ha hecho público (y está dentro de MainWindow). A continuación se muestra uno de los tres cuadros de texto.
public float GetLEL()
{
bool LEL = false;
float parsedLELValue = 0;
LEL = float.TryParse(LEL_TextBox.Text, out parsedLELValue);
return parsedLELValue;
}
¿Cómo puedo devolver este valor a mi clase de control de usuario tal como está, incluso si cambia?
He intentado todo tipo, como crear una instancia dentro de Usercontrol (que no ha funcionado) -
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;
}
Sin embargo, la instancia en Usercontrol no encuentra el método GetLEL() dentro de MainWindow. Puede ayudarme alguien, por favor. Alguien más ha sugerido Get and Set, pero no estoy seguro de cómo hacerlo.
1 Respuestas
0
Traté de reproducir lo que entendí que quieres lograr; Si tiene alguna pregunta sobre este código, con gusto le responderé.
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"));
}
}
}
}
}
Respondido 28 ago 12, 15:08
"¿Cómo puedo devolver este valor a mi clase de control de usuario tal como está, incluso si cambia?" : ¿puede aclarar lo que quiere lograr exactamente? ¿Qué quiere decir con "mi clase de control de usuario"? Básicamente, va en la dirección equivocada, para recuperar el valor de su TextBox, debe usar DataBinding: msdn.microsoft.com/en-us/library/ms752347.aspx - franssu
Mi control de usuario hace algunos cálculos basados en los valores de estos cuadros de texto que se encuentran en la ventana principal. Los valores de los cuadros de texto pueden ser cambiados por el usuario, por lo tanto, incluso si se han cambiado, deben ser los que se utilizarán en el control de usuario. Enlace de datos, ¿cómo puedo lograr esto? la información es demasiado compleja para mí, ¿hay alguna manera más fácil? - Ibrahiem Rafiq
"por lo tanto, incluso si se han cambiado, deben ser los que se utilizarán en el control de usuario". ¿Puedes explicar una vez más? Y sí, hay mucha información para procesar, pero en la práctica no es tan difícil y es el camino a seguir si quieres una aplicación bien diseñada. Intente buscar en Google "enlace de datos simple wpf", por ejemplo. stackoverflow.com/questions/1725554/… - franssu
Correcto, intentaré explicarlo, en un momento estoy configurando los valores de estos cuadros en 0.00 en función de una casilla de verificación (en el control de usuario, sin embargo, cuando la casilla de verificación no está marcada, quiero que vuelva a los valores del cuadro de texto, pero no lo hace, se queda en cero.- Ibrahiem Rafiq
Definitivamente tienes que DataBind;) - franssu