В моем MainWindow я создаю новый экземпляр класса, содержащего разные настройки. После установки параметров класса я установил datacontext = этому классу.Доступ к главному окну datacontext из нового созданного окна
public partial class MainWindow : Window
{
private MeasConSettings mMeasConSettings = new MeasConSettings();
public MainWindow()
{
InitializeComponent();
DataContext = mMeasConSettings;
}
private void MenuComm_Click(object sender, RoutedEventArgs e)
{// See code below}
}
Теперь у меня есть функция, чтобы открыть новое окно, это окно содержит текстовое поле, кто в данный текст должен быть привязан к DataContext в MainWindow.
private void MenuComm_Click(object sender, RoutedEventArgs e)
{
FrmSettings newWindow = new FrmSettings();
newWindow.DataContext = mMeasConSettings;
newWindow.TxtComm.Text = mMeasConSettings.CommSettings;
newWindow.Show();
}
Этот код заполняет текстовое поле из NewWindow с правильным содержанием, но это не становится связанным Собствености, так как DataContext не обновляется после изменения текста в текстовом поле (TxtComm в новосозданном окне) ,
Пример кода XAML для текстового поля:
<TextBox Grid.Row="1" Grid.Column="3" Margin="2,0" Name="TxtComm" DataContext="{Binding Path=CommSettings, UpdateSourceTrigger=PropertyChanged}" />
«CommSettings» является членом класса MeasConsettings
public class MeasConSettings
{
private string mCommSettings;
public string CommSettings
{
get
{
return mCommSettings;
}
set
{
mCommSettings = value;
}
}
public MeasConSettings()
{
CommSettings = "Com5:19200,8,n,1";
}
}
Моя проблема заключается в том, как я могу отрегулировать значение mMeasConSettings.CommSettings (определенный в моем MainWindow) в моем newWindow (который создается после нажатия кнопки). Если я изменил значение текстового поля в моем новомWindow, значение, сохраненное в mMeasConSettings.CommSettings, также должно быть изменено.
PS: Я новичок в WPF, поэтому любые советы приветствуются!
Я не вижу в вашем коде привязки. Вам нужно привязать свойство Text для TextBox к свойству в DataContext, которое должно быть изменено с помощью привязки TwoWay. Ваш XAML с TextBox должен иметь что-то вроде '. –
@ odyss-jii Спасибо, изменив XAML текстового поля на ' ' IT WORKED !!! –
Enrico
Рад, что я мог бы помочь! –