我有這樣的用戶控件:如何發現在viewmodel中改變了引用類型屬性?
<Button Grid.Row="1" X:Name="ChangeButton" Click="ChangeButton_Click">Change</Button>
我的用戶控件代碼隱藏:
public static readonly DependencyProperty SelectedPersonProperty =
DependencyProperty.Register("SelectedPerson", typeof(PersonModel), typeof(MyControl),
new FrameworkPropertyMetadata
{
DefaultValue=null,
BindsTwoWayByDefault = true
});
public PersonModel SelectedPerson
{
get { return (PersonModel)GetValue(SelectedPersonProperty); }
set { SetValue(SelectedPersonProperty, value);}
}
public static readonly DependencyProperty TextValueProperty =
DependencyProperty.Register("TextValue", typeof(string), typeof(NumericTextBox),
new FrameworkPropertyMetadata{
BindsTwoWayByDefault=true
});
public string TextValue
{
get { return (string)GetValue(TextValueProperty); }
set {
SetValue(TextValueProperty, value);
}
}
public MyControl(){
SelectedPerson = new PersonModel();
}
private void ChangeButton_Click(object sender, RoutedEventArgs e)
{
TextValue="Hello";
SelectedPerson.Age = 12;
SelectedPerson.FirstName = "AA";
SelectedPerson.LastName = "BB";
}
在我的MainView XAML代碼我有:
<UC:MyControl SelectedPerson="{Binding Person}" TextValue="{Binding Path=Name,UpdateSourceTrigger=PropertyChanged}" ></UC:MyControl>
<TextBox Grid.Row="1" Background="Yellow" Text="{Binding Path=Person.Name,UpdateSourceTrigger=PropertyChanged}" />
MainViewModel代碼:
PersonModel person
public PersonModel Person {
get { return _person; }
set
{
if (_person!= value)//i set a breakpoint here
{
_person= value;
RaisePropertyChanged("Person ");
}
}
}
string _name;
public string Name
{
get { return _name; }
set
{
if (_name != value)//i set a breakpoint here.when TextValue changed this breakepoint actived
{
_name = value;
RaisePropertyChanged("Name");
}
}
}
當我點擊我的用戶控件中的ChangeButton時,usercontrol中的selectedperson發生了變化,我的視圖中的文本框顯示名稱如「AA」。但我在viewmode中的breake點不是actived.how我可以找出當我的Person在viewmode改變了嗎?
@Hassan Khan我需要找到它在我的viewmodel.i編輯我的問題。當TextValue更改我的名字視圖模式breakepoint激活,但爲什麼選擇人更改視圖模型中的人breakepoint不活躍? – 2011-12-18 14:55:40