Я знаю, что должен использовать шаблон MVVM, но я пытаюсь получить шаг за шагом ближе к нему. Так вот мой Listbox:ObservableCollection привязка к listbox ui не обновляется
<ListBox x:Name="BoardList" ItemsSource="{Binding notes}" >
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<TextBox IsReadOnly="True" ScrollViewer.VerticalScrollBarVisibility="Visible" Text="{Binding text}" TextWrapping="Wrap" Foreground="DarkBlue"></TextBox>
<AppBarButton Visibility="{Binding visibility}" Icon="Globe" Click="OpenInBrowser" x:Name="Link"></AppBarButton>
<AppBarButton Icon="Copy" Click="Copy"></AppBarButton>
<AppBarButton Icon="Delete" Click="Delete"></AppBarButton>
</StackPanel>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
В MainPage.xaml.cs я заявляю следующее:
ObservableCollection<BoardNote> notes = new ObservableCollection<BoardNote>();
Так что, если я понял это право мне не нужно заботиться о «INotifyCollectionChanged» потому что я использую наблюдаемый коллектив? Так что я получил, например, текстовое поле, как это:
<Textbox x:Name="UserInputNote" Placeholdertext="Type in a text for your note"></Textbox>
и кнопка Добавить новую ноту в ObservableCollection и событие щелчка так же, как это:
notes.Add(new BoardNote(UserInputNote.Text));
Так что теперь интерфейс должен обновлять каждый раз, когда пользователь нажимает кнопку, чтобы сохранить новую заметку. Но ничего не происходит. Что я сделал не так?
Если вам это нужно здесь класс BoardNote:
class BoardNote
{
public string text
{
get; set;
}
public BoardNote(string text)
{
this.text = text;
}
public Visibility visibility
{
get
{
if (text.StartsWith("http"))
return Visibility.Visible;
else
return Visibility.Collapsed;
}
}
}
Вам нужно реализовать NotifyPropertyChanged для ObservableCollection –
@MichalKozak могли бы вы написать строку кода для меня, чтобы понять это? У меня проблемы с методом propertychanged ... –