テキスト ボックスを持つユーザー コントロールがあります。UserControl に同じ名前の DependencyProperty を実装して、texbox の Text プロパティを公開しようとしました。したがって:
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 部分が正常に動作しているようです。ただし、両方の UserControls の Text プロパティが空の文字列であるかどうかを確認するコンバーターを使用して、ボタンの IsEnabled プロパティをこれらの UserControls の 2 つの Text プロパティにバインドしようとしました。アプリケーション ウィンドウが読み込まれると、次のエラーが表示されます。
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 を持ちます。
どこで間違ったのですか?