我有一个自定义类:
class CustomClass
{
public string Test { get; set; }
CustomClass()
{
this.Test = "";
}
}
我在这样的 Application.Resources 上声明这个自定义类:
<Application.Resources>
<local:CustomClass x:Key="myobj"/>
</Application.Resources>
此资源是网格的 DataContext,TextBox 绑定了 Test 属性,如下所示:
<Grid DataContext="{DynamicResource myobj}">
<TextBox Text="{Binding Path=Test, Mode=TwoWay}"></TextBox>
</Grid>
突然在运行时,我改变了资源的价值
this.Resources["myobj"] = new CustomClass() { Test = "12456" };
我希望 TextBox 上引用的值始终是当前位于“myobj”资源上的对象的值,并且我希望在 TextBox 的 Text 属性值发生更改时自动更改当前对象的值,因此,我使用了 Mode=TwoWay,但它没有发生。
我使用了 WPF Inspector,我看到资源值何时更改,绑定了一个新的已清除对象而不是我创建的对象
我是 WPF 的新手,对不起我的英语和我的无知;
问候,
编辑 1
它可以实现道德逻辑发布的代码,谢谢!但是很抱歉,如果我之前不清楚,当绑定一个新资源时,如下所示
this.Resources["myobj"] = new instance;
当它在声明此资源的同一窗口中调用时,它工作正常,与我在 UserControl 中调用此行不同,似乎 UserControl 不继承 MainWindow 资源,它是如何工作的?