更新代码中创建的控件的绑定

时间:2018-01-17 20:26:27

标签: wpf data-binding user-controls

我创建了一个UserControl,它有一些绑定到其视图模型的值。 我想创建一个UserControl的实例,为它提供一个视图模型,并将其保存到图像中,而不是在任何地方实际显示它。

问题在于,当我创建UserControl的实例并为其提供视图模型时,绑定不会更新。因此,我保存的图像是没有任何数据的控件。

如何强制所有绑定更新为我在代码中创建的用户控件,而不实际在屏幕上显示?

这是我写的一个简短例子:

UserControl1.xaml:

<Grid>
    <TextBlock Name="txt" Text="{Binding}" />
</Grid>

UserControl1.xaml.cs

public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();
    }

    internal string GetText()
    {
        return txt.Text;
    }
}

test.cs中

public void Test()
{
    UserControl1 uc1 = new UserControl1();
    uc1.DataContext = "Test";
    Console.WriteLine("The text is " + uc1.GetText());
}

我希望它打印出来&#34;文本是Test&#34;,但它实际打印出来&#34;文本是&#34;。

1 个答案:

答案 0 :(得分:0)

我设法通过在调用InitializeComponent之前设置DataContext来解决问题。为此,我为我的用户控件创建了一个新的构造函数,如下所示:

public UserControl1(object viewModel)
{
    DataContext = viewModel;
    InitializeComponent();
}

如果我使用这个构造函数,即使我从未在屏幕上显示控件,绑定也会起作用。