2014-07-11 1 views
0

나는 Windows phone 8 app을 개발 중입니다. 내 응용 프로그램의 일부에서 사용자 응답이 필요합니다. Windows 전화 사용자 정의 컨트롤 페이지를 만듭니다. 사용자가 목록 상자에서 값을 선택합니다. UserControl을 페이지목록 상자 선택 항목을 얻는 방법 mainpage xaml에서 태그

에 여기에 내가 내가 내가 TextBlock에 도달하지 못할 사용자 제어 페이지에 대한 클래스 객체를 생성 할 때 mainpage.xaml.But에있는 TextBlock의 텍스트를 선택 얻을하려는 내 사용자 관리 페이지

<Grid x:Name="columngrid" Background="#FF1FCB4E" Width="480" >   
    <Grid.RowDefinitions> 
     <RowDefinition Height="300"/> 
     <RowDefinition Height="70"/> 
     <RowDefinition Height="70"/> 
    </Grid.RowDefinitions> 
    <ListBox Name="URLListBox" Grid.Row="0" Background="#FF1FCB4E" > 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <Border BorderBrush="#FF0B232F" BorderThickness="2"> 
        <TextBlock x:Name="surename" Width="460" Tag="{Binding b1Tag}" Height="80" FontSize="25" Text="{Binding text}" Foreground="#FFBF9595" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0" /> 
       </Border>          
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
    <Button Grid.Row="1" x:Name="btnOK" Content="OK" Background="#FF892121" /> 
    <Button Grid.Row="2" x:Name="btnCancel" Content="Cancel" Background="#FF892121"/>    
</Grid> 

의 코드입니다. listbox. 도달 할 수있는 방법은 내가 선택한 텍스트 블록의 텍스트를 얻을 수 있습니다 나는 이것을 시도하지만 난 Listbox 객체를 가져올 것임을 깨달았습니다.

 surah popupsurah = new surah();//usercontrol page 
     Popup popup2 = new Popup(); 
     private void ApplicationBarIconButton_Click(object sender, EventArgs e) 
     { 
      collapsedgrid.Visibility = Visibility.Collapsed; 
      popupsurah.URLListBox.Tap += (s, args) => 
      { 
       string transferID = ((TextBlock)s).Text as string; 
+0

여기에 도움이되는 샘플이 있습니다. http://www.geekchamp.com/tips/how-to-expose-properties-of-a-user-control-in-windows-phone –

답변

0

가장 좋은 방법은 ListBox SelectedItem 속성을 사용하여 바인딩을 수행하여 객체 자체에서 쉽게 검색 할 수 있도록하는 것입니다.

MyUserControl(MyClass); 

생성자에서 : 당신은 UserControl을이 클래스의 인스턴스를 전달할 수 있습니다

class MyClass 
{ 
List<string> Items{get;set;} 
string SelectedItem{get;set;} 
} 

: 당신은 클래스를 가질 수

다음과 같은

뭔가, (알고리즘) MyUserControl :

DataContext를 설정하십시오. this.DataContext = MyClass;

xaml에 속성 이름을 바인딩하십시오. 그게 전부 야.

또 다른 방법은 다음과 같습니다

저장 상태를 사전에 선택된 항목의 문자열 :

PhoneApplicationService.Current.State["SelectedItem"]=YourSelectedItemString; 

당신은이 같은에서 MainPage.xaml에서 검색 할 수 있습니다

var selectedItem=PhoneApplicationService.Current.State["SelectedItem"] as string; 
+0

나는 문제가 없습니다. usercontrolpagexaml.cs의 목록 상자에서 텍스트 가져 오기 – user3820387

+0

ListBoxName.SelectedItem 또는 ListBoxName.SelectedIndex를 사용하여 OnSelectionChanged 이벤트에서 가져올 수 있습니다. ListBox의 ItemsSource 속성을 바인딩하면 다음과 같이 SelectedItem을 TypeCast로 만들어야합니다. ListBoxName.SelectedItem as ViewModelType; –

0

당신이 할 수있는 더 나은 go Phone : ListBox의 거의 모든 이벤트와 속성을 가진 ListBox보다 더 최적화 된 LongListSelector 컨트롤입니다.

관련 문제