텍스트 상자가있는 사용자 정의 컨트롤이 있습니다. 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 속성을 빈 문자열이 있는지 확인합니다 변환기를 사용하여 이러한 UserControls 중 두 Text 속성을 단추의 IsEnabled 속성을 바인딩 할했습니다. 응용 프로그램 창이로드 될 때 다음과 같은 오류가 발생합니다.
System.InvalidCastException 처리되지 않았습니다. 메시지 = "MS.Internal.NamedObject 형식의 개체를 System.String 형식으로 변환 할 수 없습니다."
은 변환 방법에 따라서 보이는 : 예외가 발생 될 때
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있다.
어디로 잘못 갔습니까? 당신이 명시 적으로 캐스팅 할 때
감사합니다. 문제는 내가 생각했던 것보다 훨씬 간단했다. UserControl 인스턴스 자체의 이름을 변경 한 후 ElementName = "MyUserControlInstance"라는 이름을 바꾸는 것을 잊었습니다 ... – Dabblernl
가끔은 그게 당신을 미치게 만드는 작은 것들 ... 오, 누가 그 모든 시간을 장난입니다. :) –