gpt4 book ai didi

c# - 在用户控件中绑定(bind)控件的属性

转载 作者:太空宇宙 更新时间:2023-11-03 16:47:56 24 4
gpt4 key购买 nike

为了这个问题的目的,我定义了一个非常简单的用户控件:

<UserControl x:Class="simpleUserControl.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300"
Width="300">
<Grid>
<TextBox Name="TextBox1"/>
</Grid>
</UserControl>

我希望(用户控件的)用户能够设置“TextBox1”的“Text”属性,因此我定义了一个属性(命名为“text”)来获取和设置 TextBox1.Text:

namespace simpleUserControl
{
public partial class UserControl1 : UserControl
{
public string text
{
get { return TextBox1.Text; }
set { TextBox1.Text = value; }
}

public static readonly DependencyProperty textProperty = DependencyProperty.Register("text", typeof(string), typeof(UserControl1));

public UserControl1()
{
InitializeComponent();
}
}
}

现在,在使用用户控件时,我想将此“文本”属性绑定(bind)到某个字符串对象:

 <Window x:Class="WpfApplication33.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:simple_user_control="clr-namespace:simpleUserControl;assembly=simpleUserControl"
Title="Window1"
Height="300"
Width="300"
Loaded="Window_Loaded">
<Grid Name="MainGrid">
<simple_user_control:UserControl1 Name="MyUserControl">
<simple_user_control:UserControl1.text>
<Binding Path="my_text"/>
</simple_user_control:UserControl1.text>
</simple_user_control:UserControl1>
</Grid>
</Window>

以及背后的代码:

namespace WpfApplication33
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}

string my_text = "this is a text";
private void Window_Loaded(object sender, RoutedEventArgs e)
{
MainGrid.DataContext = this;
}
}
}

但由于某种原因这不起作用...我不明白为什么,因为我已经设置了 DataContext 并引用了用户控件...我做错了什么?(值得一提的是,像这样直接设置 'text' 属性时:

MyUserControl.text = "Another text";

一切正常,因此我认为问题与绑定(bind)有关。

最佳答案

您没有属性,您有 my_text 的私有(private)成员,WPF 不会绑定(bind)到它。

试试这个:

private string myText = "this is a text";
public string MyText
{
get
{
return myText;
}

set
{
myText = value;
}
}

如果您想更改文本并自动显示更改,您可能应该在 setter 中实现 INotifyPropertyChanged

关于c# - 在用户控件中绑定(bind)控件的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5211254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com