从ListBox中的UserControl访问TextBox.Text

时间:2014-01-21 22:41:48

标签: wpf xaml visual-c++ user-controls xaml-binding

我有一个UserControl需要更改页面上TextBox的.text。我的问题是我找不到从UC代码隐藏中访问TextBox的方法。顺便说一下,我使用的是Visual C ++,而不是C#。

基本上UserControl有一个TextBox,当它中的文本发生变化时,我需要更改页面上TextBox的文本。如果这是有道理的。

我已经尝试将Page TextBox绑定到UserControl TextBox,但我无法让TextBox找到另一个。我在UserControl中试过#include Page .h,但是仍然没有让我访问页面上的TextBox。我还研究了在UserControl上使用Window :: Current :: Content,但这似乎也不允许我访问Page TextBox(除非我误解了它是如何工作的)。

如果您需要我的任何代码让我知道,但现在它是一个更大的项目的一部分,除非我删除一堆东西,但没有任何意义,但是你将无法复制它尝试运行它所以我试图通过提供尽可能详细的细节来提出我的问题,但保持简单。我已经在互联网上搜索“XAML绑定TextBox到UserControl”,虽然结果有限,但我已经浏览了所有这些(我已经被困在我自己想了近一周了) 。

1 个答案:

答案 0 :(得分:0)

首先,我有三个链接供您使用,我真的希望您能阅读链接页面。来自MSDN的第一个链接应该可以帮助您开始使用WPF,因为很明显您还不知道如何使用它:

  

Walkthrough: Getting Started with WPF

第二个和第三个链接来自StackOverflow帮助中心,因为很明显您还没有阅读这些页面,它们将帮助您充分利用这个网站(并更快地回答您的问题):< / p>

  

How do I ask a good question?
  How to create a Minimal, Complete, Tested and Readable example

现在要解决您的问题......您只需向DependencyProperty添加UserControl,并从控件内外对数据进行绑定即可。代码背后:

public static readonly DependencyProperty ValueProperty = DependencyProperty.Register(
    "Value", typeof(string), typeof(MainWindow), new UIPropertyMetadata("Some text"));

public string Value
{
    get { return (string)GetValue(ValueProperty); }
    set { SetValue(ValueProperty, value); }
}

UserControl内的XAML

<TextBlock Text="{Binding Value, RelativeSource={RelativeSource AncestorType={x:Type 
    YourLocalPrefix:YourControlname}}}" />

XAML UserControl

<YourLocalPrefix:YourControlname Value="{Binding SomePropertyOutsideControl}}}" />