我可以帮助你翻译成中文。以下是需要翻译的内容:
有人能建议我一个简单的解决方案来解决这些问题吗? 提前感谢您。
我正在使用Caliburn Micro框架开发一个WPF应用程序,并且需要将一个集合绑定到DatGrid的ItemsSource上,请参考下面的代码:
类
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public ObservableCollection<Subject> Subjects;
}
public class Subject
{
public string Title{ get; set; }
}
视图模型
public class PersonViewModel : Screen
{
private Person _person;
public Person Person
{
get { return _person; }
set
{
_person = value;
NotifyOfPropertyChange(() => Person);
NotifyOfPropertyChange(() => CanSave);
}
}
....
}
查看
<UserControl x:Class="CalCompose.ViewModels.PersonView" ...ommited... >
<Grid Margin="0">
<TextBox x:Name="Person_Id" HorizontalAlignment="Left" Height="23" Margin="10,52,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<TextBox x:Name="Person_Name" HorizontalAlignment="Left" Height="23" Margin="10,90,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<DataGrid ItemsSource="{Binding Person_Subjects}" Margin="10,177,0,0"></DataGrid>
</Grid>
</UserControl>
问题1:当我运行应用程序时,文本框获取了正确的值,但数据网格没有填充。在这里,我使用深层属性绑定技术,使用约定“ClassName_PropertyName”。
问题2:当我改变“Name”属性的值时,“NotifyOfPropertyChange(() => Person)”从未被调用。我想在名称字段中的文本更改时调用警卫方法。有人能建议我一个简单的解决方案来解决这些问题吗? 提前感谢您。
Person
上添加事件处理程序... - MoonKnight