사용자 지정 컨트롤의 하위 컨트롤 이름을 찾을 수 없습니다.

조지듀크

.Net 4.7.2에서 WPF 4.5.2 C# 7을 사용하고 있습니다.

코드로 StoryBoard 애니메이션이 있는 EventTrigger를 추가하고 싶습니다. Xaml에서는 다음과 같이 보일 것입니다(테스트됨, 작동 중)

<!-- in the control template -->
<Viewport3D x:Name="PART_Viewport" Visibility="Hidden" Width="Auto" Height="Auto">       
    <!-- ... -->        
</ViewPort>


<!-- in the trigger -->
<EventTrigger RoutedEvent="local:MyCustomControl.MyEvent">
    <BeginStoryboard>
        <Storyboard>
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_Viewport"  Storyboard.TargetProperty="Visibility">
                <!-- ... -->
            </ObjectAnimationUsingKeyFrames>
        </Storyboard>
    </BeginStoryboard>      
</EventTrigger>

사용자 정의 컨트롤 클래스에서는 다음과 같습니다.

public override void OnApplyTemplate()
{
    DiscreteObjectKeyFrame frameStart = new DiscreteObjectKeyFrame() { KeyTime = new TimeSpan( 0 , 0 , 0 ) , Value = Visibility.Visible , };
    DiscreteObjectKeyFrame frameEnd = new DiscreteObjectKeyFrame() { KeyTime = new TimeSpan( 0 , 0 , 0 , 1 , 100 ) , Value = Visibility.Hidden , };

    ObjectAnimationUsingKeyFrames objectAnimationUsingKeyFrames = new ObjectAnimationUsingKeyFrames()
    {
        Name = "PART_ViewPort"
    };

    Storyboard.SetTargetName( objectAnimationUsingKeyFrames , "PART_Viewport" );
    Storyboard.SetTargetProperty( objectAnimationUsingKeyFrames , new PropertyPath( "Visibility" ) );

    objectAnimationUsingKeyFrames.KeyFrames.Add( frameStart );
    objectAnimationUsingKeyFrames.KeyFrames.Add( frameEnd );
}

EventTrigger 생성은 제대로 작동하지만 호출하면 "MyNameSpace.MyCustomControl의 네임스페이스에서 "PART_Viewport" 이름을 찾을 수 없습니다"라는 오류가 발생합니다.

내가 도대체 ​​뭘 잘못하고있는 겁니까?

필 졸란스

귀하의 예에 대한 모든 세부 사항을 이해하지는 못했지만 매우 유사한 오류를 생성했습니다.

라우트된 이벤트 Tap을 사용하여 vp3d라는 사용자 지정 컨트롤을 정의했습니다. 사용자 정의 컨트롤이 사용되는 위치에서 다음과 같이 이벤트 핸들러를 지정했습니다.

<cc:vp3d Grid.Row="2">
  <cc:vp3d.Triggers>
    <EventTrigger RoutedEvent="cc:vp3d.Tap">
      <BeginStoryboard>
        <Storyboard>
          <ObjectAnimationUsingKeyFrames Storyboard.TargetName="PART_Viewport"  Storyboard.TargetProperty="Visibility">
            <!-- ... -->
          </ObjectAnimationUsingKeyFrames>
        </Storyboard>
      </BeginStoryboard>
    </EventTrigger>
  </cc:vp3d.Triggers>
</cc:vp3d>

PART_Viewport는 ControlTemplate에 정의되어 있습니다.

사용자 지정 컨트롤 내에서 GetTemplateChild 메서드를 사용하여 이 이름에 액세스할 수 있지만 사용자 지정 컨트롤 외부에서 이 이름을 참조할 수는 없다고 생각합니다.

그러나 사용자 정의 컨트롤의 OnApplyTemplate 메서드에 다음 코드를 추가하면 문제가 해결되는 것 같습니다.

public override void OnApplyTemplate ( )
{
  base.OnApplyTemplate ();

  var vp = GetTemplateChild ("PART_Viewport") as Viewport3D;
  RegisterName ("PART_Viewport", vp ) ;
}

이것은 이 스택 오버플로 스레드 의 아이디어를 기반으로 합니다 . 이것이 작동하지 않으면 해당 스레드의 다른 답변이 도움이 될 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

마스터 페이지 컨트롤의 렌더링을 변경하는 사용자 지정 컨트롤을 가져올 수 없습니다.

사용자 정의 컨트롤을 만들지 못했습니다. 생성자를 찾을 수 없습니다.

다른 사용자 컨트롤에서 하나의 사용자 컨트롤을 볼 수 있습니까?

사용자 정의 컨트롤에서 리소스 사전의 스타일을 찾을 수 없습니다.

Rails 4 사용자 지정 컨트롤러 작업 오류- "ID없이 '모델'을 찾을 수 없습니다."

다른 개발자가 컨트롤을 추가하고 내 컨트롤의 모든 컨트롤 동작을 "상속"할 수있는 사용자 컨트롤

Generic.xml에서 다른 사용자 지정 컨트롤을 사용하는 사용자 지정 컨트롤을 만들 수 있습니까?

컨트롤러에서 Rails 5 사용자 정의 모듈 기능을 찾을 수 없습니다.

Access 2016 VBA-컨트롤의 이름을 수동으로 지정하여 컨트롤의 사용자 지정 컬렉션 만들기

Reactive formbuilder는 함수의 매개 변수에서 양식 컨트롤 이름을 허용하지 않습니다.

이름이 '인사말'인 컨트롤을 찾을 수 없습니다.

개체의 속성을 사용자 지정 컨트롤에 바인딩할 수 없습니다.

루프를 사용하지 않고 컨트롤을 찾을 수 있습니까?

ListView의 UWP에서 사용자 지정 컨트롤을 사용하여 속성을 바인딩 할 수 없습니다.

정의되지 않은 AngularJS 컨트롤러를 찾을 수 없습니다.

사용자 지정 WinForms 컨트롤을 사용하여 중첩 된 컨트롤이 내부에 도킹 된 사각형을 변경할 수 있습니까?

사용자 폼의 컨트롤을 반복하여 특정 컨트롤을 숨 깁니다.

Magento를 사용하여 컨트롤러 404 페이지를 찾을 수 없음

밑줄은 컨트롤의 속성 이름을 허용하지 않습니다.

사용자 정의 컨트롤을 추가 할 수 없음 "도구 상자 항목을로드하지 못했습니다"C # winforms

FluidTYPO3 fluidpages – 사용자 정의 페이지 컨트롤러를 찾을 수 없음

UWP의 템플릿 컨트롤과 사용자 지정 컨트롤. 온라인에서 명확한 답변을 찾을 수 없음

이름이 'idTypesAccepted'인 컨트롤을 찾을 수 없습니다.

버튼을 사용하여 전면 사용자 정의 컨트롤을 다른 사용자 정의 컨트롤 안에 넣습니다.

rxweb 유효성 검사기의 @elementClass를 사용하는 동안 이름이 'userName'인 컨트롤을 찾을 수 없습니다.

컨트롤은 정의된 스타일을 사용하지 않지만 다른 컨트롤은

SpringBoot 응용 프로그램이 컨트롤러에서 정의 된 저장소를 찾을 수 없습니다.

사용자 정의 UI5 컨트롤은 바인딩된 값을 업데이트하지 않습니다.

컨트롤러 이름 및 작업 이름 main.js를 사용하는 동안 asp.net 코어의 Angular 2 설정 문제를 찾을 수 없음

TOP 리스트

  1. 1

    셀레늄의 모델 대화 상자에서 텍스트를 추출하는 방법은 무엇입니까?

  2. 2

    Blazor 0.9.0 및 ASP.NET Core 3 미리보기 4를 사용한 JWT 인증

  3. 3

    openCV python을 사용하여 텍스트 문서에서 워터 마크를 제거하는 방법은 무엇입니까?

  4. 4

    C # 16 진수 값 0x12는 잘못된 문자입니다.

  5. 5

    Excel : 합계가 N보다 크거나 같은 상위 값 찾기

  6. 6

    오류 : MSB4803 : MSBuild의 .NET Core 버전에서 "ResolveComReference"작업이 지원되지 않습니다.

  7. 7

    R에서 Excel로 내보낼 때 CET / CEST 시간 이동이 삭제됨

  8. 8

    node.js + postgres : "$ 1"또는 그 근처에서 구문 오류

  9. 9

    확대 후 하이 차트에서 Y 축이 잘못 정렬 됨

  10. 10

    EPPlus에서 행 높이를 설정할 때 이상한 동작

  11. 11

    Ionic 2 로더가 적시에 표시되지 않음

  12. 12

    MS Access 부분 일치 2 테이블

  13. 13

    EPPlus에서 병합 된 셀의 행 높이 자동 맞춤

  14. 14

    ExecuteNonQuery- 연결 속성이 초기화되지 않았습니다.

  15. 15

    ResponseEntity를 사용하고 InputStream이 닫히는 지 확인하는 적절한 스트리밍 방법

  16. 16

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  17. 17

    오류 : "const wchar_t *"유형의 인수가 "WCHAR *"유형의 매개 변수와 호환되지 않습니다.

  18. 18

    Java에서 이미지를 2 색으로 변환

  19. 19

    overflow-y를 사용할 때 스크롤 버벅 거림 줄이기 : scroll;

  20. 20

    Java에서 Apache POI를 사용하여 테이블 크기 및 간격을 단어로 설정하는 방법

  21. 21

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

뜨겁다태그

보관