【发布时间】:2017-11-16 01:23:17
【问题描述】:
这是我应该获取数据的用户控制代码:
这是我的主窗口,我在其中包含了用户控件并将值设置为属性:
这不起作用,因为该值始终为空。请帮助纠正我做错的任何事情。谢谢。
【问题讨论】:
-
从下一次开始发布实际代码而不是图像。
标签: c# wpf silverlight
这是我应该获取数据的用户控制代码:
这是我的主窗口,我在其中包含了用户控件并将值设置为属性:
这不起作用,因为该值始终为空。请帮助纠正我做错的任何事情。谢谢。
【问题讨论】:
标签: c# wpf silverlight
UserControl 是在设置 GetMyValue 属性之前创建的。在创建实例之前,您不能设置实例的属性...
等到UserControl 被加载,你会得到预期的值:
public UserControl1()
{
InitializeComponent();
Loaded += (s, e) =>
{
string finalValue = GetMyValue;
};
}
【讨论】:
据我所知,您似乎需要使用依赖属性。这将替换您拥有的 GetMyValue 属性。
查看此示例以了解自定义依赖属性。
https://www.tutorialspoint.com/wpf/wpf_dependency_properties.htm
旁注:一种快速的制作方法是键入“propdp”,然后按两次制表符。然后按自己的方式进行设置。
【讨论】:
new Property MetaData("") 时,我得到的结果总是空的。
1.确保您已将范围设置为“用户”而不是“管理员”,否则您将无权访问资源。 2.修改数据后确保有保存方法。
写作 使用 Properties.Settings;
Settings.Default.myProperty = myValue;
Settings.Default.Save();
阅读
String myValue = Settings.Default["myProperty"].ToString();
您还可以通过以下方式管理您的资产 解决方案探索 > 你的项目 > 属性 > Settings.settings
【讨论】:
一个很好的解决方案:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
var control = new UserControl1();
control.GetMyValue = "HelloWorld";
grid1.Childern.Add(control);
}
还有其他解决方案,例如Binding DataContext 或自定义DependencyProperty
【讨论】:
您需要创建依赖属性。没有什么难做的:
首先你需要注册:
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 类中即可。
【讨论】:
'UIPropertyMetadata(string.Empty)); 这行代码给我错误,我只能使用 PropertyMetadata...问题是每当我使用PropertyMetadata(string.Empty); 时,我得到的结果总是空的。