我想學習使用Silverlight的MVVM模式。有大量的視頻和博客。我從高層理解它,但似乎無法得到我自己的實現。MVVM和Silverlight的幫助
我得到了以下觀點:
<UserControl x:Class="SilverlightApplication1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:SilverlightApplication1.ViewModel"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<TextBlock Text="{Binding Name, Mode=TwoWay}" Width="200" Height="200"/>
<Button Name="btn1" Width="200" Height="20" Margin="100,268,100,12" Click="btn1_Click"/>
</Grid> </UserControl>
在我的虛擬機,我有: 命名空間SilverlightApplication1.ViewModel
{
public class ViewModel : INotifyPropertyChanged
{
private Model.UserModel m_model;
public ViewModel()
{
m_model = new Model.UserModel();
}
public string Name
{
get
{
return m_model.Name;
}
set
{
if (value != m_model.Name)
{
m_model.Name = value;
InvokePropertyChanged("Name");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void InvokePropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
}
,並在我的模型:
namespace SilverlightApplication1.Model
{
public class UserModel
{
public string Name { get; set; }
}
}
基本上,我想模擬一個按鈕點擊並更新屬性,以便它可以觸發正確的ty改變了事件。我試着硬編碼的財產MainPage執行後面的代碼是這樣的:
private void btn1_Click(object sender, RoutedEventArgs e)
{
ViewModel.ViewModel vm = new ViewModel.ViewModel();
vm.Name = "Test";
}
不應該這個更新的屬性(對於名稱),提高PropertyChanged事件?我看到其他的例子也做了類似的事情。我不明白什麼是訂閱事件
任何人都可以發光一些嗎?
但事情看起來很正確,但是,您是否設置了斷點_或執行任何故障排除?你的發現是什麼?當你運行應用程序時會發生什麼?除了你的NotifyPropertyChange之外,一切正常嗎? – RyBolt
PropertyChanged事件始終爲空。當我爲該屬性設置斷點時,它會更新,但事件永遠不會上升 – NewGuyIntown