从C#WPF应用程序中的代码初始化静态资源
我有两个WPF窗口。Main one包含一个绑定到从C#WPF应用程序中的代码初始化静态资源,c#,wpf,initialization,resourcedictionary,C#,Wpf,Initialization,Resourcedictionary,我有两个WPF窗口。Main one包含一个绑定到ObservableCollection的网格。我可以从列表中添加和删除对象(人员)。我还有另一个窗口,当我修改一个人时可以显示 Person有三个属性:Name、LastName和Age,并正确实现INotifyPropertyChanged。在新窗口中,我有3个文本框,它们绑定到名为“Person”的静态资源人员 当我初始化新窗口时,我向构造函数提供Person对象,然后我希望这个Person属性显示在三个文本框中 当下面的代码看起来像这样时
ObservableCollection
的网格。我可以从列表中添加和删除对象(人员)。我还有另一个窗口,当我修改一个人时可以显示
Person有三个属性:Name、LastName和Age,并正确实现INotifyPropertyChanged。在新窗口中,我有3个文本框,它们绑定到名为“Person”的静态资源人员
当我初始化新窗口时,我向构造函数提供Person对象,然后我希望这个Person属性显示在三个文本框中
当下面的代码看起来像这样时,一切都正常工作:
public ModifyPerson(Person modPerson)
{
// ... some code
Person p = this.Resources["person"] as Person;
p.Name = modPerson.Name;
p.LastName = modPerson.LastName;
p.Age = modPerson.Age;
}
然而,我更喜欢这样做:
public ModifyPerson(Person modPerson)
{
// ... some code
this.Resources["person"] = modPerson;
}
但这样做是行不通的。(资源分配正确,但文本框不显示modPerson属性的值
如何解决这个问题?尝试在XAML中使用:
<TextBox Text="{Binding Name}"></TextBox>
<TextBox Text="{Binding LastName}"></TextBox>
<TextBox Text="{Binding Age}"></TextBox>
复制者喜欢:
public void CopyTo(PlayerBO player) {
player.Id = this.Id;
player.Name = this.Name;
player.CurrentPolicyVersion = this.CurrentPolicyVersion;
player.CreatedAt = this.CreatedAt;
player.UpdatedAt = this.UpdatedAt;
player.Description = this.Description;
player.MACAddress = this.MACAddress;
player.IPAddress = this.IPAddress;
player.Policy = Policy;
}
最后:
view.CopyTo(source);
然后保存源代码
希望它有帮助!Person是您的
模型
对象。请将它放置在绑定到的属性中,而不是用作静态资源
public ModifyPerson(Person modPerson)
{
personToModify = modPerson;
}
private Person personToModify;
public Person PersonToModify
{
get
{
return personToModify;
}
}
和XAML:
<StackPanel DataContext="{Binding PersonToModify}">
<TextBox Text="{Binding Name, Mode=TwoWay" />
<TextBox Text="{Binding LastName, Mode=TwoWay" />
<TextBox Text="{Binding Age, Mode=TwoWay" />
</StackPanel>
(为了简洁起见,我省略了标签)
您可以使用DynamicResource
而不是StaticResource
,但是将它们中的任何一种用于您的模型
实际上并不是它们的预期目的,相反,您应该使用绑定您可以展示文本框是如何定义的吗?您是否确保您的NotifyPropertyChanged?为什么要使用StaticResource
是否用于此?
<StackPanel DataContext="{Binding PersonToModify}">
<TextBox Text="{Binding Name, Mode=TwoWay" />
<TextBox Text="{Binding LastName, Mode=TwoWay" />
<TextBox Text="{Binding Age, Mode=TwoWay" />
</StackPanel>