我有一个用户控件,它有一个文本框。我试图通过在UserControl中实现具有相同名称的DependencyProperty来公开TexBox的文本属性。因此:
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text",
typeof(string),
typeof(UserControlWithTextBox),
new UIPropertyMetadata(string.Empty));
public string Text
{
get { return (string)GetValue(TextProperty); }
set
{
SetValue(TextProperty, value);
textBox.Text = value;
}
}
在我的应用程序中,get部分似乎工作正常。但是,我尝试使用转换器将按钮的IsEnabled属性绑定到其中两个用户控件的文本属性,该转换器将检查两个用户控件的文本属性是否都是空字符串。加载应用程序窗口时,我得到以下错误:
System.InvalidcastException未处理
message=“无法将MS.Internal.NamedObject类型的对象转换为System.String类型。”
convert方法如下所示:
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return (string) values[0] != string.Empty &&
(string) values[1] != string.Empty;
}
当引发异常时,值[0]和值[1]都具有值DependencyProperty.UnsetValue。
我哪里做错了?