부모 페이지 Page1에 button1이 있습니다. Page1에는 uc1이라는 사용자 정의 컨트롤이 있습니다. uc1에는 내부에 격자 grid1이있는 업데이트 패널이 있습니다. uc1.grid1의 행 명령 이벤트 (행 명령 이벤트에 일부 if 조건이 있음)에 따라 Page1.button1의 가시성을 false로 설정하려고합니다. Page1.button1의 가시성을 다음과 같이 설정합니다.상위 페이지 설정 하위 사용자 컨트롤 페이지에서 가시성 제어
uc1에서 IsButton1Visible 속성을 만듭니다. UC1.Grid1.RowCommand의 속성을 page1 PreRender 이벤트에서 false로 설정하고 IsButton1Visible에 액세스하고 Page1.button1 표시를 설정합니다.
Page1.button1 표시 여부가 지정 줄에서 false로 설정되어 있어도 UI가 표시 되어도 여전히 볼 수 있습니다. 내가 뭘 잘못하고 있는지 모르겠다. 또는 button1 및 그 가시성을 잡는 방식이 올바르지 않습니다.
일반적으로 사용자 정의 컨트롤 이벤트 동안 사용자 정의 컨트롤에서 부모 페이지의 컨트롤 속성을 설정할 수 있습니까?
public class ButtonVisiblityEventArgs : EventArgs
{
public ButtonVisiblityEventArgs(bool visible)
{
this.Visiblity = visible;
}
public bool Visiblity { get; private set; }
}
public delegate void UpdateParentButtonVisibilityEventHandler(object sender, ButtonVisiblityEventArgs args);
사용자 제어 코드 : 당신은 이벤트 구동 모델 접근 방식을
위임/EventArgs입니다 코드를 사용하는 경우
귀하의 질문을 등록 더 좋을 수도, 키 오프 조금 혼란 수 있음을 완료합니다. 'IsButton1Visible' 속성이 usercontrol의 일부라는 것을 확신합니까? – freefaller
페이지에서 처리 할 수있는 사용자 지정 이벤트를 UserControl에서 발생시킵니다. 그런 다음 이벤트 인수 또는 UserControl 속성에 따라 가시성을 전환 할 수 있습니다. –
더 나은 접근법은 컨트롤 상에'UpdateParentButtonVisibility' 효과를위한 이벤트를두고 원하는 가시성을 설정하는 이벤트 arg를 생성하는 것입니다. 그런 다음 상위 페이지에서 이벤트를 구독하고 적절하게 처리 할 수 있습니다. –