2009-12-11 3 views
1

각 상태에 대한 핫스팟이있는지도가 있습니다 (Expression Blend에서 완료 됨). 상태 (1부터 50까지)의 각 MouseEnter를 캡처합니다. 나는 그것을 내 도메인 데이터 소스로 전달한다.도메인 데이터 소스를 사용하여 데이터 블록을 TextBlock에 바인딩

Dim activebox As Path = TryCast(sender, Path) 
    activebox.Fill = mouseOverColor 
    Dim StateID As Integer = CInt(Right(activebox.Name, 2)) 

    Dim _StateContext As New StateContext 
    myDataGrid.ItemsSource = _StateContext.States 
    _StateContext.Load(_StateContext.GetStateByStateIDQuery(StateID.Text)) 

위의 내용은 DataGrid, 목록 상자 및 심지어 데이터 형식에서도 유효하다.

하지만 텍스트 패널이있는 스택 패널로 팝업을 만들었습니다.

popupStatesBox.DataContext = ?????????????? 
    popupStatesBox.IsOpen = True 'popup does open but has no data 

-

<Popup x:Name="popupStatsBox" Margin="8,35,0,8" DataContext="{Binding}" 
     IsOpen="false" Width="268" HorizontalAlignment="Left"> 
     <StackPanel x:Name="Layout" Background="Black"> 
<TextBlock x:Name="tbState" Text="{Binding StateName /> 
<TextBlock x:Name="tbAbbrev" Text="{Binding Abbreviation}" /> 
     </StackPanel> 
    </Popup> 

popupStatesBox.xaml

은 어떻게 textblocks가 _StateContext에서 값을 표시 할 수 없습니다.
StackPanel에는 DataContext가 있지만 ItemsSource는 없습니다. 내가 뭘 놓치고 있니? 이미이 아마 당신이 후에있는 물건의 일종이다 다음 맥락에서 미국의 모음을로드 한 가정

+0

작업 예제는 어떻게 생겼습니까? 나는 당신이 당신의 팝업 대신에 ListBox를 어떻게 사용할 것인지를 고민하고있다. – AnthonyWJones

+0

물론 상태 수집에 필요한 상태 데이터가 이미 있습니까? – AnthonyWJones

답변

0

: -

popupStatsBox.DataContext = _StateContext.States.FirstOrDefault(Function(s) s.StateID = StateID) 

주 요소 이름에 그 데이터를 인코딩되는 안 좋은 연습 봐 연결된 속성을 생성하고 각 경로의 첨부 된 속성으로 상태 ID를 저장합니다.

솔직하게 말해서 StatesSelector 컨트롤을 만들기 위해 Selector에서 파생 된 사용자 지정 컨트롤을 만들려고합니다.

StatesSource 속성에 ItemsSource 속성을 바인딩합니다. 마우스가 움직이면 은 ItemsSource의 적절한 항목을 SelectedItem 속성에 지정합니다.

그러나 이는 다소 지나치게 걸릴 수 있습니다.

+0

감사합니다. Anthony. 거의 예상대로 작동합니다. 마우스 센터에서 데이터 로딩이 지연되는 것 같습니다. 이미지에 마우스를 갖다 대면 숫자 값이 전달되고 팝업은 데이터없이 표시됩니다. 다시 마우스를 끈 다음 다시 마우스를 누르면 팝업이 데이터와 함께 나타납니다. BTW, "StatesSelector 컨트롤을 만들기 위해 Selector에서 파생 된 사용자 지정 컨트롤을 만드는 것이 유감입니다." '사용자 지정 컨트롤 ....'에 대한 자세한 정보는 어디에서 찾을 수 있습니까? – tfisher

관련 문제