问题描述
我在 usercontrol 中有 textblock.现在我想在 mainpage.xaml 中输入文本时更新 textblock 的文本.请帮忙
I have textblock inside usercontrol.Now i want to update the text of textblock when i enter the text in mainpage.xaml.Please help
我试过这个例子,但它没有更新文本.
i tried this example but it does not update text.
UserControl.xaml
<TextBlock
x:Name="txtCartcount"
Text="{Binding CartCount}"
VerticalAlignment="Center"
FontWeight="Bold"
FontSize="15"
Foreground="#E4328A"
HorizontalAlignment="Center">
</TextBlock>
MainPage.xaml
private string _CartCount;
public string CartCount
{
get { return _CartCount; }
set { _CartCount = value; NotifyPropertyChanged("CartCount"); }
}
CartCount=txtMessage.text;
推荐答案
我假设您的用户控件包含其他元素而不仅仅是 TextBox
,如果不是这种情况,您可以将您的TextBox
直接添加到您的 MainPage.xaml
中,因为它更容易.
I'll suppose your user control contains other elements and not just the TextBox
, if it's not the case, you can put your TextBox
directly into your MainPage.xaml
as it's easier.
鉴于该假设,您有两种选择可以更改 UserControl
中的文本:
Given that assumption, you have two options to change the text insideyour UserControl
:
- 无绑定:您应该在
UserControl
中公开公开您的TextBox.Text
属性的 setter,以便您可以从您的MainPage
像这样
- Without Binding: You should publicly expose a setter of your
TextBox.Text
property inside yourUserControl
so that you can modify it from yourMainPage
like this
myUserControl.SetText("MyText");
- 使用绑定:您应该在用户控件中定义一个依赖属性,该属性将包装您的
TextBox.Text
属性.然后在主页的 xaml 中,您可以绑定UserControl
的这个新定义的属性,就好像它是一个TextBlock
.这样做的方法如下: - With binding: You should define a dependency property inside your user control that will wrap your
TextBox.Text
property. Then in the xaml of your main page you can bind this new defined property of yourUserControl
as if it was aTextBlock
. Here's how you'd do this:
在您的 UserControl
的代码隐藏中:
In your UserControl
's codebehind:
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register(
"Text", typeof(String),typeof(UserControl), null
);
//This dependency property defined above will wrap the TextBlock's Text property
public String Text
{
get { return (String)GetValue(txtCartcount.Text); }
set { SetValue(txtCartcount.Text, value); }
}
现在您的 UserControl 有一个 Bindable Text
属性,您可以像这样在 MainPage.xaml
中使用它:
Now your UserControl have a Bindable Text
property that you can use in your MainPage.xaml
like this:
<UserControl
Text = "{Binding PropertyToBindTo}"
</UserControl>
所以现在,如果您正确设置了绑定,当您更改绑定属性并触发 NotifyChanged
事件时,UserControl 定义的
将收到通知并调用它的 setter,后者将设置您的 Text
属性txtCartcount
的真实 Text
属性.
So now if you set up your binding correctly, when you change the bound property and fire up the NotifyChanged
event, the defined Text
property of your UserControl
will get the notification and will call its setter, which will set the real Text
property of your txtCartcount
.
希望这会有所帮助.
这篇关于我如何从 mainpage.xaml 更新 UserControl 文本块文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!