2011-04-07 3 views
0

내가하려는 것은 사용자에게 이미지를 표시하는 silevrlight 팝업을 작성하고 선택한 라디오 옵션을 결정하기 위해 라디오 컨트롤을 선택할 수있게하는 것입니다. 이 객체는 다음과 같습니다.알 수없는 멤버 수의 목록에서 동적으로 선택 목록을 작성하십시오.

public class ConfigImage 
{ 
    public int ConfigID { get; set; } 
    public string ConfigName { get; set; } 
    public string ImagePath { get; set; } 
} 

이 코드는 알 수없는 멤버 수의 ConfigImage 목록을 반환합니다. 그리드를 사용하여 이미지를 사용자에게 표시하려고하므로 목록의 구성원 수에 따라 동적으로 열을 추가합니다. 2 명에서 5 명 정도의 회원이 목록에 올 것으로 예상됩니다. 문제는 동적으로 이미지 및 라디오 컨트롤을 추가하는 것입니다. 나는 이것의 예를 찾을 수없는 것 같습니다. 다음과 같은 코드를 사용하여 컨트롤을 추가하려고 시도했습니다.

LayoutRoot.Children.Add(new Label); 

그러나 새 Label 컨트롤에서 속성을 설정하는 방법을 알지 못합니다. 나는 이것을 알아야한다. 그러나 나는 공허하게되고있다. 그리고 그것의 모범을 발견 할 수없는 것처럼 보인다.

도움을 많이 주시면 감사하겠습니다.

답변

0

당신이 절대적으로 코드에서 컨트롤을 추가해야하는 경우, 당신이 그것에 속성을 설정하기 위해 개체에 대한 참조가 필요합니다 :

: 당신은 이니셜 라이저를 사용할 수

Label label = new Label(); 
label.Content = "text"; 
label.Width = 10; 
LayoutRoot.Children.Add(label); 

을 대안으로

LayoutRoot.Children.Add(new Label() 
{ 
    Content = "text", 
    Width = 10 
}); 

BrokenGlass가 말했듯이 xaml에서는이 작업을 완벽하게 수행 할 수 있습니다.

편집 :는 ItemsControl에의 BrokenGlass의 제안을 사용하여 XAML 전용 접근 방식을 설명하기 위해 :

<ItemsControl x:Name="ConfigImagesItemsControl" ItemsSource="MyConfigImagesList"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal" /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="Auto" /> 
        <RowDefinition Height="Auto" /> 
       </Grid.RowDefinitions> 
       <Image Grid.Row="0" Source="{Binding ImagePath}" /> 
       <RadioButton Grid.Row="1" Content="{Binding ConfigName}" GroupName="ConfigImagesGroup" /> 
      </Grid> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 
0

그냥 실버 라이트 UI 요소를 기반으로 목록 중 하나를 사용하여 - 사람들은 관측 데이터 바인딩에 당신을 수있는 것을 가장 간단한 컬렉션은 ItemsControl입니다. XAML에서 완벽하게 제어 할 수있는 컬렉션의 각 항목에 대해 사용하는 마크 업입니다.

관련 문제