2011-09-24 3 views
0

3 개의 행을 포함하는 표가 있습니다. 첫 번째 행에는 표시 도구 모음이 포함됩니다. 두 번째 행에는 상태 표시 줄이 표시됩니다. 세 번째 행에는 관찰 가능한 컬렉션에 바인딩 된 데이터 인 Listbox가 포함되어 있습니다.wpf에서 최상위에서 usercontrol을 만드는 방법은 무엇입니까?

일부 조건이 충족되면 팝업을 표시해야합니다.

나는 팝업을 사용하려고 생각했다. 팝업을 사용할 때 문제는 창을 움직일 때 부모 컨트롤과 함께 움직이지 않는다는 것이다.

그래서 프로그래밍 방식으로 상위 ZIndex와 함께 두 번째 행에 추가되는 사용자 정의 컨트롤 (mypopup)을 작성하기로 결정했습니다. 문제는 상위 인덱스를 설정해도 ListboxItems 뒤에 있습니다.

)이 문제에 대한 해결책은 무엇입니까?

Adorner를 해당 사용자 정의 컨트롤 (mypopup)에 사용하는 해결책으로, 문제는 내 사용자 정의 컨트롤 (mypopup)에 버튼과 체크 박스가 포함되어 있으며,이 컨트롤을 적용한 후에는이 컨트롤에 액세스 할 수 없습니다.

b) 내 사용자 컨트롤을 adorner와 대화식으로 만들 수있는 아이디어는 무엇입니까?

답변

0
<Window...> 
<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 

    <Toolbar Grid.Row="0" ... /> 
    <Statusbar Grid.Row="1" ... /> 
    <ListBox Grid.Row="2" ... /> 

    <OverlayControl Grid.Row="0" Grid.RowSpan="3" 
        HorizontalAlignment="Stretch" 
        VerticalAlignment="Stretch" /> 
</Grid> 
</Window> 

OverlayControl : 당신이 필요한 경우 DesignWidth/높이 : 그것은, 사용 D를 스트레칭한다으로

<UserControl ...> 
<Grid Background="#30000000"> 
    <Border HorizontalAlignment="Center" VerticalAlignment="Center" ...> 
     Content, e.g. TextBlock with a message 
    </Border> 
</Grid> 
</UserControl> 

가 UserControl을에 폭을 설정하지 마십시오. 순서는 중요하며, 마지막 행은 같은 행의 다른 행 위에 있습니다. 3 행만 차지하려면 행과 행 간격을 변경하십시오.

1

Adorners는 상호 작용을 제공하지 않을 것입니다. 그들은 단순히 드로잉 기반입니다. 따라서 사용자가 "시뮬레이션"하지 않으면 사용자 컨트롤처럼 반응하지 않습니다. 이제는 그들을 제쳐두고 두십시오.

팝업 만 사용하십시오. 배치 목표 및 배치 방향을 설정하십시오. 아래의 팝업은 버튼의 왼쪽 상단 모서리에 위치합니다.

 popup.PlacementTarget = MyButton; 
     popup.Placement = PlacementMode.Relative; 

배치 대상 즉 MyButton을 따라 이동합니다. 이를 위해 버튼의 여백을 변경하고 그에 따라 팝업 이동을 변경합니다. 이 효과가 발생하려면 팝업을 숨기고 게재 위치 타겟을 다시 설정해야합니다.

 popup.IsOpen = false; 
     popup.PlacementTarget = null; 
     MyButtonMargin = new Thickness(MyButton.Margin.Left + 10); 
     popup.PlacementTarget = MyButton; 
     popup.IsOpen = true; 

이 정보가 도움이되는지 알려주세요.

관련 문제