如何解决如何从文本框到我的视图模型中获取字符串
我正在开发一个应用程序,它将对.txt文件中的数字进行排序并在界面上显示它们。我有2个文本框,第一个用于排序之前从文件中加载所有数字,第二个用于排序数字,但是我无法从第一个文本框中获取数字。请帮帮我!
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,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
我在这里放置了事件和属性,但是我猜这很不好。
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; } }
}
请帮助
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。