如何在运行时将值从窗口传递给usercontrol?

时间:2017-06-14 04:33:21

标签: c# wpf silverlight

这是我应该获取数据的用户控制代码:

This is my user control code behind where I should get the data

这是我的主窗口,其中包含用户控件并将值设置为属性:

This is my main window where I included the user control and set the value to the property

这不起作用,因为值始终为null。请帮助纠正我做错的任何事情。感谢。

5 个答案:

答案 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类中即可。