У меня проблема с привязкой ObservableCollection к LongListSelector, и я не знаю, как это решить. У меня две опорные позиции, а на втором я хочу иметь список любимых банков. Когда я нажимаю кнопку «add_to_favourites», два банка (выбранные в списке Picker с первым элементом поворота) должны добавлять в ObservableCollection, но они не отображаются в пользовательском интерфейсе.Как связать ObservableCollection с LongListSelector?
XAML для LongListSelector является:
</phone:PivotItem>
<!--Pivot item two-->
<phone:PivotItem Header="Ulubione" Margin="10,0,10,7">
<phone:LongListSelector x:Name ="FavouritesLongList" HorizontalAlignment="Left" Height="531" VerticalAlignment="Top" Width="456" Margin="-251,647,0,-647" LayoutMode="List" IsGroupingEnabled="False" SelectionChanged="Lista_Ulubione_SelectionChanged">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<TextBlock FontSize="35">
<Run Text="{Binding name1}"></Run>
<Run Text=" >> "></Run>
<Run Text="{Binding name2}"></Run>
</TextBlock>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
<!--Double line list no text wrapping-->
</phone:PivotItem>
</phone:Pivot>
Теперь, как выглядит мой ObservableCollection:
public partial class MainPage : PhoneApplicationPage
{
public List<Bank> list = new List<Bank>();
private ObservableCollection<Ulubione> favourites = new ObservableCollection<Ulubione>();
Wynik wy = new Wynik();
// Constructor
public MainPage()
{
InitializeComponent();
zak.DataContext = wy;//TextBlocks DataContext
ban1.DataContext = wy;
ban2.DataContext = wy;
zle.DataContext = wy;
czas.DataContext = wy;
DataContext = App.ViewModel;
this.Banki1.ItemsSource = list;//Item sources for ListPicker
this.Banki2.ItemsSource = list;}
И моя кнопка add_to_favourites нажмите:
private void addToFavourites(object sender, EventArgs e)
{
int b1 = this.Bank1.SelectedIndex;//ListPicker selected index of Bank1
int b2 = this.Bank2.SelectedIndex;//ListPicker selected index of Bank2
String n1 = list[this.Banki1.SelectedIndex].name;//Name od Bank1 from list of banks
String n2 = list[this.Banki2.SelectedIndex].name;/Name od Bank2 from list of banks
Ulubione fav = new Ulubione(b1, b2, n1, n2);
bool ifCanAdd = true;
foreach (Ulubione itm in favourites)
{
if (itm.index1 == b1 && itm.index2 == b2)
{
MessageBox.Show("This banks are already in favourites");
ifCanAdd = false;
}
}
if (ifCanAdd == true)
{
favourites.Add(fav);
MessageBox.Show("Added to favourites");
FavouritesLongList.ItemsSource = favourites;
}
}
Пожалуйста, помогите мне, как связать это ObservableCollection to LongListSelector и обновлять пользовательский интерфейс каждый раз, когда я добавляю что-то к t o коллекция.
Что такое имя1 и имя2 в привязке? Являются ли эти свойства Улубионе? Вы можете показать Улубионе? Почему вы устанавливаете FavouritesLonglist.ItemsSource каждый раз, когда добавляете элемент? Переместите его сразу за этим. Banki2.ItemsSource = list; - нет необходимости устанавливать его каждый раз, поскольку это ObservableCollection – Romasz
Да name1 и name 2 являются значениями Ulubione. Ulubione выглядит так: 'public class Ulubione { public int index1 {get; задавать; } public int index2 {get; задавать; } public String name1 {get; задавать; } public String name2 {get; задавать; } public Ulubione (int i1, int i2, String n1, String n2) { index1 = i1; index2 = i2; name1 = n1; name2 = n2; } } ' – Zygi
Эта маржа =" - 251,647,0, -647 "хорошо? Вы можете что-то увидеть, если вы добавите что-то в избранное после InitializeComponent()? – Romasz