2012-08-27 3 views
0

XAML :콘텐츠 컨트롤을 목록 상자에 연결하는 방법은 무엇입니까?

<ListBox> 
    <ListBox.ItemTemplate> 
     <DataTemplate > 
      <StackPanel > 
       <Grid Width="335" > 
        <TextBlock Text="{Binding Body}" /> 
       </Grid> 
      </StackPanel> 
     </DataTemplate> 
     <DataTemplate > 
      <StackPanel > 
       <Grid Width="335" > 
        <Image Source="{Binding Image}" /> 
       </Grid> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

CS :

public class GardenConverter : ContentControl 
{ 
    public DataTemplate TextTemplate { get; set; } 
    public DataTemplate ImageTemplate { get; set; } 

    protected override void OnContentChanged(object oldContent, object newContent) 
    { 
     base.OnContentChanged(oldContent, newContent); 
     // apply the required template 

     GardenObject garden = newContent as GardenObject; 
     if (garden.image == "0") 
     { 
      ContentTemplate = TextTemplate; 
     } 
     else 
     { 
      ContentTemplate = ImageTemplate; 
     } 
    } 
} 

답변

1

당신은 데이터 템플릿 선택을 시도 할 수 있습니다.

public class GardenTemplateSelector : DataTemplateSelector 
{ 
    public override DataTemplate SelectTemplate(object item, DependencyObject container) 
    { 
     var element = container as FrameworkElement; 
     if (element != null && item != null && item is GardenObject) 
     { 
      if((item as GardenObject).image == "0") 
      { 
       return element.FindResource("TextTemplate") as DataTemplate;    
      } 
      else 
      { 
       return element.FindResource("ItemTemplate") as DataTemplate;    
      }   
     } 

     return null; 
    } 
} 

XAML에서 TextTemplate 및 ItemTemplate을 정의해야합니다. 더 많은 정보를 들어

, 당신은 나에게 대답 할 수있는 올바른 방법을 보여 주셔서 감사합니다

+0

http://msdn.microsoft.com/en-us/library/system.windows.controls.datatemplateselector.aspx 참조 http://www.windowsphonegeek.com/articles/Implementing-Windows-Phone-7-DataTemplateSelector-and-CustomDataTemplateSelector – Newred

관련 문제