I'm working on an app which will sort numbers from .txt files and show them on interface. I have 2 text boxes, first one for loading all numbers from files before sorting and second one for sorted numbers but I can't get numbers from the first textbox. Help me please!
XAML
/// **this button loads files from system chosen by user and put numbers to first textblock** ///
<Button Name="load" Background="Pink" Grid.Column="0" BorderBrush="Black" BorderThickness="1" Click="load_Click" ClickMode="Press" Width="120" Height="30">
Load File
</Button>
/// **First text block, numbers are loaded here but I can't load them back to viewModel to sort them :((**
<TextBox x:Name="numbers1" Text="{Binding NumbersString,
Mode=OneWayToSource,
UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="True"
TextWrapping="Wrap"
FontSize="15"
FontWeight="Bold"
Width="Auto"
Height="150"
Margin="20,0,20,0"
Background="AntiqueWhite"/>
/// I want to load numbers here, I don't have sort method yet but it doesn't matter now, tell me please how to put numbers from previous one to this one.
<TextBox x:Name="numbers2" Text="{Binding numbers, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="True" TextWrapping="Wrap"
FontSize="15"
FontWeight="Bold"
Width="Auto"
Height="150"
Background="AntiqueWhite"/>
XAML.cs
I put event and property things here but I guess its bad.
public partial class MainWindow : Window, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName)
{
var evt = PropertyChanged; // create local copy in case the reference is replaced
if (evt != null) // check if there are any subscribers
evt(this, new PropertyChangedEventArgs(propertyName));
}
public MainWindow()
{
InitializeComponent();
this.DataContext = new numbersViewModel();
}
public void load_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == true)
numbers1.Text = numbers1.Text + " /// " + File.ReadAllText(openFileDialog.FileName);
RaisePropertyChanged("numbers1");
}
}
ViewModel.cs
sealed class numbersViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private numbersModel _model;
protected void RaisePropertyChanged(string propertyName)
{
PropertyChangedEventHandler evt = PropertyChanged; // create local copy in case the reference is replaced
if (evt != null) // check if there are any subscribers
evt(this, new PropertyChangedEventArgs(propertyName));
}
public string NumbersString
{
get { return _model.numbersString; }
set
{
if (value != _model.numbersString)
{
_model.numbersString = value;
RaisePropertyChanged("numbers1");
RaisePropertyChanged("numbers2");
}
}
}
public string numbers2
{
get { return _model.numbersString2; }
set
{
if (value != _model.numbersString2)
{
_model.numbersString2 = value;
RaisePropertyChanged("numbers2");
}
}
}
public numbersViewModel()
{
_model = new numbersModel
{
numbersString = "",
numbersString2 = ""
};
}
Model.cs
sealed class numbersModel : INotifyPropertyChanged
{
private string model="";
private string model2 = "";
public string numbersString { get { return model; } set { model = value; } }
public string numbersString2 { get { return model2; } set { model2 = value; } }
}
help please