2016-01-29 3 views
2

У меня есть следующие модели классаWPF Bind Список строковых значений в ItemsControl

ResultViewModel 
public string word {get;set;} 
public List<string> meanings {get;set;} 

С 2 свойствами. Как связать строку значений значений с панелью стека?

Моих Данные будут как

слово = "а", значение = "a1", "a2", "a3"

слова = "Ъ", значение = "b1", "b2 », "b3" ....

слово = "C", значения = "c1", "с2", "c3" ....

Я следующий XAML который поможет мне связать «a» «b» «c» и т. д. Но теперь я хочу показать значение его нижней части

<ItemsControl Name="lviewLookupResult" Background="#363636"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate>     
        <StackPanel Orientation="Horizontal" Margin="5 5 5 0">       
         <Label Margin="5 0" Padding="0" Content="{Binding word}" /> 
        </StackPanel> 
        <StackPanel Orientation="Vertical" Margin="5 5 5 0">        

         ??????HOW CAN I SHOW Meanings HERE??????????? 


        </StackPanel> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

Я использую ниже код для привязки модели и связывание штрафа на время выполнения

List<ResultViewModel> view_model = new List<ResultViewModel>();   
    lviewLookupResult.ItemsSource = view_model; 
+1

Вы также можете использовать 'ItemsControl'. – dymanoid

ответ

4

Используйте другой ItemsControl так:

<ItemsControl Name="lviewLookupResult" Background="#363636"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Vertical"> 
        <StackPanel Orientation="Horizontal" Margin="5 5 5 0"> 
         <Label Margin="5 0" Padding="0" Content="{Binding word}" /> 
        </StackPanel> 
        <ItemsControl Margin="5 5 5 0" ItemsSource="{Binding meanings}"> 
         <ItemsControl.ItemTemplate> 
          <DataTemplate> 
           <TextBlock Text="{Binding}"/> 
          </DataTemplate> 
         </ItemsControl.ItemTemplate> 
        </ItemsControl> 
       </StackPanel> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
1

Что я предлагаю, чтобы создать класс под названием MeaningsCollection и переопределить метод ToString.

public class MeaningsCollection 
{ 
    public List<string> meanings {get;set;} 

    public override string ToString() 
    { 
     return "the collection in your preferred format"; 
    } 
} 

public class ResultViewModel 
{ 
    public string word {get;set;} 
    public MeaningsCollection Meanings {get;set;} 
} 

И в вашем XAML должно быть что-то вроде:

<ItemsControl Name="lviewLookupResult" Background="#363636"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate>     
        <StackPanel Orientation="Horizontal" Margin="5 5 5 0">       
         <Label Margin="5 0" Padding="0" Content="{Binding word}" /> 
         <Label Margin="5 0" Padding="0" Content="{Binding Meanings}" /> 
        </StackPanel> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
+0

Мне нужно сделать несколько действий с отдельными строками. Так что это решение не будет работать для меня –

+0

Вы можете добавить другое свойство 'MeaningsCollection', которое возвращает список строк. –

2

Пожалуйста, попробуйте этот обновленный XAML.

<ItemsControl Name="lviewLookupResult" Background="#363636"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal" Margin="5 5 5 0"> 
        <Label Margin="5 0" Padding="0" Content="{Binding word}" /> 
        <ListView ItemsSource="{Binding meanings}"> 
         <ListView.ItemTemplate> 
          <DataTemplate> 
           <StackPanel Orientation="Horizontal"> 
            <Label Content="{Binding}"/> 
           </StackPanel> 
          </DataTemplate> 
         </ListView.ItemTemplate> 
        </ListView> 
       </StackPanel> 

      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 
1

Использование элемента ItemsControl и установка свойства ItemsPanel.

<ItemsControl Name="lviewLookupResult" Background="#363636"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate>     
       <StackPanel Orientation="Horizontal" Margin="5 5 5 0">       
        <Label Margin="5 0" Padding="0" Content="{Binding word}" /> 
       </StackPanel> 

       <ItemsControl ItemsSource="{Binding meanings}">        
         <ItemsControl.ItemsPanel> 
          <ItemsPanelTemplate> 
           <StackPanel Orientation="Vertical" Margin="5 5 5 0" /> 
          </ItemsPanelTemplate> 
         </ItemsControl.ItemsPanel> 
       </ItemsControl> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 
Смежные вопросы