2008-10-04 3 views
4
<DataTemplate x:Key="Genre_DataTemplate"> 
     <RadioButton GroupName="One" Content="{Binding... 
</DataTemplate> 

의 ItemTemplate을에서 생성 된 그룹 RadioButtons를 할 수있는 방법은 내가 모든 라디오 버튼이이 그룹에있는 것처럼 행동해야 인스턴스화하려면, 거기에 내 ItemsControl에의 ItemTemplate을가한다, 나는 이유 때문에 알고 생성 된 RadioButton은 visualtree에서 인접하지 않습니다.코드 위 ItemsControl에

함께 그룹화 할 수있는 해결 방법이나 해결 방법은 무엇입니까? GroupName 속성도 여기에 아무런 영향을 미치지 않습니다.

[업데이트] 내가 실버

답변

4

여기

예상대로 작동 샘플 XAML 코드 문제는 RadioButton.GroupName 동작이 공통 조상을 찾아 트리의 해당 부분에 효과적으로 적용되도록 논리 트리에 의존하지만 Silverlight의 ItemsControl이 논리 트리를 유지 관리하지 않는다는 것입니다. 즉, 귀하의 예제에서 RadioButton의 Parent 속성은 항상 null입니다.

이 문제를 해결하기 위해 간단한 연결 동작을 작성했습니다. 여기에서 사용할 수 있습니다 : http://www.dragonshed.org/blog/2009/03/08/radiobuttons-in-a-datatemplate-in-silverlight/

3

에서 이것을 시도하고 나는 문제가 컨트롤 트리에 다른 곳이라고 생각합니다. 자세한 내용을 게시 할 수 있습니까?

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
<Grid> 
    <Grid.Resources> 
     <XmlDataProvider x:Key="flickrdata" Source="http://api.flickr.com/services/feeds/photos_public.gne?tags=flower&amp;lang=en-us&amp;format=rss_200"> 
      <XmlDataProvider.XmlNamespaceManager> 
      <XmlNamespaceMappingCollection> 
       <XmlNamespaceMapping Prefix="media" Uri="http://search.yahoo.com/mrss/"/> 
      </XmlNamespaceMappingCollection> 
      </XmlDataProvider.XmlNamespaceManager> 
     </XmlDataProvider> 
     <DataTemplate x:Key="itemTemplate"> 
     <RadioButton GroupName="One"> 
      <Image Width="75" Height="75" Source="{Binding Mode=OneWay, XPath=media:thumbnail/@url}"/> 
     </RadioButton> 
     </DataTemplate> 
     <ControlTemplate x:Key="controlTemplate" TargetType="{x:Type ItemsControl}"> 
      <WrapPanel IsItemsHost="True" Orientation="Horizontal"/> 
     </ControlTemplate> 
    </Grid.Resources> 
    <ItemsControl 
     Width="375" 
     ItemsSource="{Binding Mode=Default, Source={StaticResource flickrdata}, XPath=/rss/channel/item}" 
     ItemTemplate="{StaticResource itemTemplate}" 
     Template="{StaticResource controlTemplate}"> 
    </ItemsControl> 
</Grid> 

</Page> 

PS를 : (ItemsControl에서 생성 된 때 일반적 가지고) 순서 그룹화 라디오 버튼은 동일한 상위 있어야 요소 일

+0

이 문제는 WPF에서 ItemsControl의 ControlTemplate을 ItemsHost로 Panel로 만드는이 적절한 해결책입니다. 그러나 Silverlight에서 ItemHost를 사용하지는 않습니다 (확실하지 않습니다). Silverlight의 모든 해결 방법 –

관련 문제