Если я попробую «var mainpage new Mainpage ()», я запусту конструктор главной страницы, а затем все поля в объекте XAML вернутся к нулю.Как получить доступ к объектам XAML в silverlight, которые принадлежат другому классу, но являются частью одного и того же пространства имен?
Позвольте мне объяснить на примере.Если вы посмотрите на первый ответ, вот с чем я сталкиваюсь
public class MyPage
{
MyPage()
{
// the constructor makes all the variables from the xaml null
}
public TextBox MyTextBox
{
get { return SomeTextBox; }
}
}
public class SomeOtherClass
{
private void SomeFunction()
{
var page = new MyPage(); // this makes the text empty
var sometext = page.MyTextBox.Text; // so sometext will be empty
}
}
Так что все, что пользователь подразумевает при первом запуске программы, при запуске SomeFunction становится нулевым.
Что яСначала попробуем посмотреть, если при создании SomeClass значения помещаются в этот класс.
Если это не удастся, я собираюсь попробовать MVVM.Я видел видео http://www.vimeo.com/8915487 и получил пример кода mvvm
Вот модель:
namespace SimpleMVVM.Model
{
public class SimpleModel
{
// super easy version
//public string SomeSimpleValue { get; set; }
private string _SomeSimpleValue = string.Empty;
// actually do something version...
public string SomeSimpleValue
{
get
{
return "some value";
}
set
{
_SomeSimpleValue = value;
}
}
}
}
вот вид:
и вот viewmodel.cs
using Simple;
using SimpleMVVM.Model;
namespace SimpleMVVM.ViewModel
{
public class SimpleViewModel : SimpleViewModelBase
{
private SimpleModel MyModel = new SimpleModel();
public string SomeSimpleValue
{
get { return MyModel.SomeSimpleValue; }
set
{
if (MyModel.SomeSimpleValue != value)
{
MyModel.SomeSimpleValue = value;
RaisePropertyChanged("SomeSimpleValue");
}
}
}
}
}
Используя этот пример, мне интересно, будет ли это так же просто, как внедрение ViewModel, а затем изменение привязок в модели и представлении.
Действительно ли MVVM так прост?
Есть еще один.Это базовый класс viewmodel
using System.ComponentModel;
namespace Simple
{
public class SimpleViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChanged(string PropertyName)
{
var e = new PropertyChangedEventArgs(PropertyName);
PropertyChangedEventHandler changed = PropertyChanged;
if (changed != null) changed(this, e);
}
}
}
ОК, теперь сложная часть.Если я создам новый класс.Как получить данные из класса viewmodel?