我有Textbox和我的用户控件,如何将Textbox属性Text绑定到UserControl中的属性消息?
XAML:
<TextBox Name="txtMessages"/>
<myControl:MyAppBar x:Name="appBar" Message="{Binding ElementName=txtMessages, Path=Text, Mode=TwoWay}" Grid.Row="3"/>
我的财产:
public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
private string message;
public string Message
{
get
{
return message;
}
set
{
message = value;
RaisePropertyChanged("Message");
}
}
但这对我不起作用。 我得到错误:
找不到与此错误代码关联的文字。
我也试试这个: 我试试看:
public static readonly DependencyProperty UserControlTextProperty = DependencyProperty.Register(
"Message",
typeof(int),
typeof(ImageList),
new PropertyMetadata(0, new PropertyChangedCallback(MyControl.MyAppBar.OnUserControlTextPropertyChanged))
);
public string Message
{
get { return (string)GetValue(UserControlTextProperty); }
set { SetValue(UserControlTextProperty, value); }
}
但没有成功: “无法找到与此错误代码相关联的文本。”
答案 0 :(得分:1)
首先,定义自己的DependencyProperty需要保留命名规则。在上面的代码&#34; UserControlTextProperty&#34;不承认属性名称应为&#34;属性&#34; +属性,例如&#34; MessageProperty&#34;。
public static readonly DependencyProperty MessageProperty = DependencyProperty.Register("Message", typeof(int), typeof(ImageList), new PropertyMetadata(0, new PropertyChangedCallback(MyControl.MyAppBar.OnUserControlTextPropertyChanged)));
public string Message
{
get { return (string)GetValue(MessageProperty); }
set { SetValue(MessageProperty, value); }
}
它将被识别为常规依赖属性。 如果您使用自己的用户控件编写,则不必将其ViewModel分开,而是让您的控件实现INotifyPropertyChanged接口并将控件的DataContext绑定到自身。