如何将值从wpf表单传递给wpf用户控件

时间:2010-03-15 07:29:50

标签: c# .net wpf user-controls

Hai

我的WPF表单中有一个WPF用户控件,当我单击我的表单中的按钮时,我只想将一些值传递给usercontrol中的文本框,告诉我该怎么做。

3 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点。最简单的方法是使用String属性并在UserControl中实现INotifyPropertyChanged。

为了说明,您将拥有如下所示的UserControl:

/// <summary>
/// Interaction logic for TextBoxUsercontrol.xaml
/// </summary>
public partial class TextBoxUsercontrol : UserControl, INotifyPropertyChanged
{
    private string _text;
    public string Text
    {
        get { return _text; }
        set
        {
            _text = value;
            if(PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs("Text"));
        }
    }

    public TextBoxUsercontrol()
    {
        DataContext = this;
        InitializeComponent();
    }

    public event PropertyChangedEventHandler PropertyChanged;
}

现在,UserControl中的TextBox必须将自己绑定到Text属性,如下所示:

<TextBox Text="{Binding Text}" />

然后在你的WPF表单中,你将声明你的UserControl和一个处理点击的按钮,如下所示:

<local:TextBoxUsercontrol x:Name="textBox" />
<Button Click="ButtonBase_OnClick" >Add Text</Button>

最后,在Click处理程序中:

private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
    textBox.Text = "Hello!";
}

向您展示了解决方案之后,我提出了一个问题,要求技能为5分之一。您可以更加具体地提出问题并提供示例代码片段,而不要求我们从一个下载您的整个解决方案我们必须等待的网站下载它(更不用说我们大多数人都有关于下载未知文件的安全意识)。

祝你好运。

答案 1 :(得分:0)

标准WPF?没办法。

为什么呢?你没有传递价值观。您在单击的项目(按钮)上获得了一个单击事件,其中包含按钮上的元素(仅限),然后在代码中访问其他元素,因此也必须在代码中定义(标准方式)并通过称为“属性”的东西公开它们的值,或者通过名称获取控件并提取值。但你没有传递任何额外的数据。

查看教程;)

如果你想在点击时将值传递给METHODS,你需要使用类似于校准(http://www.codeplex.com/caliburn)的东西,它允许你将点击映射到方法并从其他方法中获取传递给方法的值控件。

答案 2 :(得分:0)

只需创建一个Dependency属性并将Porperty绑定到UserControl TextBox。创建对象本身时,将值分配给Usercontrol依赖项属性。