2014-02-22 9 views
0

나는 나의 LongListSelector에 대한 DataTemplate을 설정합니다DataTemplate을 복원하는 방법?

<ctl:LongListSelector Loaded="listbox_Loaded" Name="listbox" SelectionChanged="listbox_selectionChanged"> 
    <ctl:LongListSelector.ItemTemplate> 
     <DataTemplate> 
      <Border Background="Gray" MouseLeftButtonDown="listbox_itemClicked"> 
       <TextBlock Text="{Binding}" TextWrapping="Wrap" Width="350"/> 
      </Border> 
     </DataTemplate> 
    </ctl:LongListSelector.ItemTemplate> 
</ctl:LongListSelector> 

내가 코드에서 일부 항목의보기를 변경할 일부 작업 후를 이제 위의 설명이 DataTemplate을을 복원해야합니다. 코드에서이를 수행하는 방법?

일부 처리기가 있습니다. 첫 번째 값은 TextBlock에서 값을 가져오고 두 번째 값은 선택한 항목을 빨간색으로 바꿉니다. 다른 항목을 선택하면 이전 회색 색상으로 되돌려 야합니다. DataTemplate 복원 시도가 작동하지 않는 것 같습니다.

private void listbox_selectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     var lb = (LongListSelector)sender; 
     var lbi = lb.SelectedItem.ToString(); 
     lb.ItemTemplate = Resources["ItemTemplateLongListSelector"] as DataTemplate; 
     var categoryCode = CategoryCodes.ElementAt(CategoryNames.IndexOf(lbi)); 
     addedItem.Category = categoryCode; 
    } 

    private void listbox_itemClicked(object sender, System.Windows.Input.MouseButtonEventArgs e) 
    { 
     var border = (Border)sender; 
     var borderBrush = new SolidColorBrush(); 
     borderBrush.Color = Color.FromArgb(255, 255, 0, 0); 
     border.Background = borderBrush; 
    } 

감사합니다! 당신이 다음을 수행 할 수 있습니다 뒤에

 <phone:LongListSelector Loaded="listbox_Loaded" 
           Name="LongListSelector" 
           SelectionChanged="listbox_selectionChanged" 
           ItemTemplate="{StaticResource ItemTemplateLongListSelector}" /> 

코드 표준 DataTemplate을 설정하려면 : ItemTemplate을

<phone:PhoneApplicationPage.Resources> 

    <DataTemplate x:Key="ItemTemplateLongListSelector"> 
     <Border Background="Gray" 
       MouseLeftButtonDown="listbox_itemClicked"> 
      <TextBlock Text="{Binding}" 
         TextWrapping="Wrap" 
         Width="350" /> 
     </Border> 
    </DataTemplate> 

</phone:PhoneApplicationPage.Resources> 

바인딩 DataTemplate을 :

답변

1

당신은 자원을 할 수

LongListSelector.ItemTemplate = Application.Current.Resources["ItemTemplateLongListSelector"] as DataTemplate; 
,451,515,

또는

LongListSelector.ItemTemplate = Resources["ItemTemplateLongListSelector"] as DataTemplate; 

나는이 도움이되기를 바랍니다!

+0

standart DataTemplate을이 방법으로 재설정하면 ItemsSource가 삭제됩니다. 모든 LongListSelector가 사라진 것처럼 보입니다. – splash27

+0

@ splash27 답변에 몇 가지 추가 정보가 추가되었습니다. – ROMAN

+0

도움을 주셔서 감사합니다. 그러나 두 번째 방법을 사용하면 아무 것도 나타나지 않습니다. 원래보기가 복원되지 않습니다. 또한 내 질문에 몇 가지 추가 정보를 추가했습니다. – splash27