2010-03-15 76 views
0

如何从WPF窗体值传递给WPF用户控件

我有我的WPF窗体一个WPF用户控件,当我点击我的形式我的按钮,我只是想通过一些价值的文本框,其在用户控件中,告诉我如何执行此操作。

+0

只是为了澄清:你有一个自定义控件,其中包含一个文本框(除了其他控件)?而且,从这个控制之外,你想要设置文本框中显示的文本?! – gehho 2010-03-15 07:40:02

+0

如果你想让人们用你的项目来帮助你,*请*不要上传到easy-share.com上,在下载之前他们必须等待。取而代之的是使用http://skydrive.live.com(或类似的) – mg007 2010-03-15 11:30:05

+0

,你可以在skydrive中检查这个示例 http://cid-08ec3041618e8ee4.skydrive.live.com/self.aspx/.SharedFavorites/InfoBox。rar – 2010-03-16 01:35:59

回答

2

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

为了说明这一点,你将有你的用户控件,如下所示:

/// <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; 
} 

现在在你的用户控件的文本框本身必须绑定到你的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,你可以有很多你的问题更具体,并给示例代码片段作为我没有要求我们从一个网站上下载你的整个解决方案,我们必须等待下载它(更不用说我们大多数人都是关于下载未知文件的安全意识)。

祝你好运。

+0

当然,这里后会做你说的,谢谢,它的工作 – 2010-03-17 03:42:30

0

标准WPF?没门。

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

看教程;)

如果你想通过周围值的点击方法,你需要使用像卡利(http://www.codeplex.com/caliburn),它可以让你的点击地图上的方法和抢从其他控件传入该方法的值。

+0

我也尝试过,但它不工作,你可以看看附加项目在给定的外观,这里有一个按钮,当我clik这个我会传递一些值到usercontrol文本框,我可以得到价值在用户控制,但我无法将值绑定到文本框 http://www.easy-share.com/1909552056/InfoBox.rar – 2010-03-15 09:43:01

+0

不,很抱歉,不会为你做你的工作;)我在一个企业防火墙后面) – TomTom 2010-03-15 09:49:43

0

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

+0

我也试过,但它不工作,你可以在给定的外观看看附加的项目,这里有一个按钮,当我克服这个我会传递一些值给用户控件文本框中,我可以得到用户控制的值,但我无法将值绑定到文本框 http://www.easy-share.com/1909552056/InfoBox.rar – 2010-03-15 09:42:21

+0

否则你可以告诉ny如何为usercontorl使用依赖对象的示例? – 2010-03-15 10:04:07

+0

只是下载样品,并看到 http://www.zshare.net/download/7380778840f0b8ab/ – 2010-03-17 07:23:32

相关问题