2013-09-03 2 views
1

это, где я пытаюсь заполнить элементы в XAMLданные не от ItemsSource

<ScrollViewer Grid.Row="2"> 
       <StackPanel> 
        <ItemsControl ItemsSource="{Binding EventsList}"> 
         <ItemsControl.ItemTemplate> 
          <DataTemplate> 
           <TextBlock Text="{Binding Value}"/> 
          </DataTemplate> 
         </ItemsControl.ItemTemplate> 
        </ItemsControl> 
       </StackPanel> 
      </ScrollViewer> 

это фиктивный метод в модели представления, что я переплетены

public string[] EventsList() 
     { 
      string[] values = {"event1", "event2"}; 
      return values; 
     } 

но это ISN» t дает какой-либо выход. этот метод также не называется.

+0

Вы должны назначить ItemSource i.e.ListList. Можете ли вы опубликовать код вашего файла .cs? –

+0

@ Ajay, я уже назначил его. см. xaml, Ankit

+0

, вам необходимо связать его с кодом, например itemControl.ItemsSource = EventsList; –

ответ

1

Это не работает, потому что вы пытаетесь привязать к методу. Вы можете привязываться только к свойствам.

public string[] EventsList 
{ 
    get 
    { 
     string[] values = {"event1", "event2"}; 
     return values; 
    } 
} 
1

Многие проблемы здесь.

Первое, что вы не можете привязать к методу. Вы можете привязываться только к свойству.

Во-вторых, вы привязываете TextBlock к Value вашего объекта, который должен быть строкой. Строка не имеет свойства Value.

Попробуйте вместо этого:

public string[] EventsList 
{ 
    get 
    { 
     string[] values = {"event1", "event2"}; 
     return values; 
    } 
} 

Затем связываются с этим свойством и отобразить полный объект строки (с помощью {Binding})

<ScrollViewer Grid.Row="2"> 
    <StackPanel> 
     <ItemsControl ItemsSource="{Binding EventsList}"> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding}"/> 
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl> 
    </StackPanel> 
</ScrollViewer> 

Примечание: это предполагает, что класс, в котором вы объявление свойства EventList было присвоено объекту DataContext вашей страницы.

0

Попробуйте это

MainPage.xaml 
     <ScrollViewer Grid.Row="2"> 
      <StackPanel> 
       <ItemsControl Name="itemControl" ItemsSource="{Binding EventsList}"> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding}"/> 
         </DataTemplate> 
        </ItemsControl.ItemTemplate> 
       </ItemsControl> 
      </StackPanel> 
     </ScrollViewer> 

MainPage.xaml.cs

public MainPage() 
    { 
     InitializeComponent();    

     this.itemControl.ItemSource = EventsList(); 
    } 
+0

Назначение ItemSource из кода-штрафа в порядке, но тогда вы должны удалить часть 'ItemsSource =" {Binding EventsList} "' из XAML –

+0

ее совершенно правильной и более элегантной для назначения itemssource из xaml. проблема была указана в другом ответе. спасибо – Ankit

+0

@KooKiz Ok. Он работает, когда я удаляю ItemsSource = "{Binding EventsList}". –

Смежные вопросы