Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C#WPF应用程序中的代码初始化静态资源_C#_Wpf_Initialization_Resourcedictionary - Fatal编程技术网

从C#WPF应用程序中的代码初始化静态资源

从C#WPF应用程序中的代码初始化静态资源,c#,wpf,initialization,resourcedictionary,C#,Wpf,Initialization,Resourcedictionary,我有两个WPF窗口。Main one包含一个绑定到ObservableCollection的网格。我可以从列表中添加和删除对象(人员)。我还有另一个窗口,当我修改一个人时可以显示 Person有三个属性:Name、LastName和Age,并正确实现INotifyPropertyChanged。在新窗口中,我有3个文本框,它们绑定到名为“Person”的静态资源人员 当我初始化新窗口时,我向构造函数提供Person对象,然后我希望这个Person属性显示在三个文本框中 当下面的代码看起来像这样时

我有两个WPF窗口。Main one包含一个绑定到
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>