这是我应该获取数据的用户控制代码:
这是我的主窗口,其中包含用户控件并将值设置为属性:
这不起作用,因为值始终为null。请帮助纠正我做错的任何事情。感谢。
答案 0 :(得分:0)
据我所知,您似乎需要使用依赖属性。这将取代您拥有的GetMyValue属性。
查看此示例以了解自定义依赖项属性。
https://www.tutorialspoint.com/wpf/wpf_dependency_properties.htm
侧注:快速制作方法是键入“propdp”,然后键入两次。然后选择设置方式。
答案 1 :(得分:0)
1.确保您已将“范围”设置为“用户”而非“管理员”,否则您将无权使用“资源”。 2.修改数据后确保你有保存方法。
写作 使用Properties.Settings;
Settings.Default.myProperty = myValue;
Settings.Default.Save();
阅读
String myValue = Settings.Default["myProperty"].ToString();
您还可以从中管理您的媒体资源 解决方案探索>您的项目>属性> Settings.settings
答案 2 :(得分:0)
这样做的一个很好的解决方案:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
var control = new UserControl1();
control.GetMyValue = "HelloWorld";
grid1.Childern.Add(control);
}
还有其他解决方案,例如Binding DataContext或制作自定义DependencyProperty
答案 3 :(得分:0)
UserControl
是在设置GetMyValue
属性之前创建的。在创建实例之前,您无法设置实例的属性...
等到UserControl
已加载,您将获得预期的值:
public UserControl1()
{
InitializeComponent();
Loaded += (s, e) =>
{
string finalValue = GetMyValue;
};
}
答案 4 :(得分:0)
您需要创建Dependency属性。不难做到:
首先你需要注册:
public static readonly DependencyProperty GetMyValueProperty =
DependencyProperty.Register("GetMyValue", typeof(string),
typeof(UserControl1), new UIPropertyMetadata(string.Empty));
然后创建自动属性:
public string GetMyValue
{
get { return (string )GetValue(GetMyValueProperty ); }
set { SetValue(GetMyValueProperty , value); }
}
这就是全部,只需将这些示例复制到UserControl1类中即可。