TextBlock
컨트롤을 만들려고하는데 어떤 방식 으로든 바인딩 된 텍스트의 서식을 지정합니다. 이를 달성하기 위해 TextBlock에서 파생 된 클래스의 CoerceValueCallback을 사용하여 필요한 인라인을 추가 한 다음 텍스트를 무시하려고했습니다. 뭔가 같은 : 이제TextBlock의 CoerceValueCallback에 인라인을 추가 할 때 FatalExecutionEngineError
public class BuggyTextBlock : TextBlock
{
static BuggyTextBlock()
{
TextProperty.OverrideMetadata(typeof(BuggyTextBlock),
new FrameworkPropertyMetadata((PropertyChangedCallback)null,
CoerceText));
}
private static object CoerceText(DependencyObject sender, object value)
{
BuggyTextBlock tb= (BuggyTextBlock)sender;
tb.Inlines.Add(new Run("Hello World")); // FatalExecutionEngineError here
return string.Empty;
}
}
, 나는 최대한 빨리 Text 속성을 (직접 또는 데이터 바인딩에 의해) 나는 FatalExecutionEngineError를 얻을 수의 변화에 따라이 컨트롤을 사용하는 경우. 이전에 을 사용했거나 null
또는 string.Empty
을 반환하려고하는 경우 중요하지 않습니다.
정말 이건 CLR 버그입니까 (오류 텍스트가 암시하는 것처럼)인가요? 아니면 내가 바보 같은 짓을하고있는 것입니까?
편집 :
이MDA의 메시지가 FatalExecutionEngineError는 메시지를 검출되었다
읽 런타임은 치명적인 오류가 발생했습니다. 오류의 주소는 0x156c의 0xe7376797, 입니다. 오류 코드는 0x80131623입니다. 이 오류는 CLR에서 버그이거나 사용자 코드의 안전하지 않거나 확인할 수없는 부분 일 수 있습니다. 이 버그의 일반적인 소스에는 COM-interop 또는 PInvoke에 대한 사용자 마샬링 오류가 포함되어 스택을 손상시킬 수 있습니다.
시도'this.Inlines.Add (새 실행 ("안녕하세요")) 할 수도 경우는' – WiiMaxx
SRY 내가 이상 – WiiMaxx
내 나쁜 정적 보았습니다을 스택 트랙을 제공해 주시겠습니까? – WiiMaxx