【问题标题】:How to pass value from wpf form to wpf user control如何将值从 wpf 表单传递到 wpf 用户控件
【发布时间】:2011-01-27 14:05:06
【问题描述】:

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

【问题讨论】:

  • 只是为了澄清:您有一个包含 TextBox 的自定义控件(除了其他控件)?而且,从这个控件之外,你想设置在 TextBox 中显示的文本?!
  • 如果您希望人们帮助您完成您的项目,不要将其上传到 easy-share.com,他们必须等待才能下载。而是使用skydrive.live.com(或类似的)
  • 你可以在skydrive中检查这个样本cid-08ec3041618e8ee4.skydrive.live.com/self.aspx/…

标签: c# .net wpf user-controls


【解决方案1】:

有几种方法可以做到这一点。最简单的方法是使用 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!";
}

在向您展示了解决方案后,我给您的提问技巧打了 1 分(满分 5 分)。您可以更具体地提出问题并提供示例代码 sn-ps,就像我所做的那样,无需我们下载您的整个解决方案从我们必须等待的站点下载它(更不用说我们大多数人都对下载未知文件有安全意识)。

祝你好运。

【讨论】:

    【解决方案2】:

    标准 WPF?没办法。

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

    看教程;)

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

    【讨论】:

    • 我也试过了,但它不起作用,你可以看看给定外观的附加项目吗,这里有一个按钮,当我点击它时,我会将一些值传递给用户控件文本框,我可以在用户控件中获取值,但我无法将值绑定到文本框easy-share.com/1909552056/InfoBox.rar
    • 不,对不起,不会为你做你的工作;)另外我在公司防火墙后面;)
    【解决方案3】:

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

    【讨论】:

    • 我也试过了,但它不起作用,你可以看看给定外观的附加项目吗,这里有一个按钮,当我点击它时,我会将一些值传递给用户控件文本框,我可以在用户控件中获取值,但我无法将值绑定到文本框easy-share.com/1909552056/InfoBox.rar
    • 否则你能告诉任何关于如何为 usercontorl 使用依赖对象的示例吗??
    • 只需下载示例并查看zshare.net/download/7380778840f0b8ab
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 2012-12-27
    • 2014-07-18
    • 2013-07-23
    • 2016-09-08
    • 1970-01-01
    相关资源
    最近更新 更多