0

В xaml окне у меня есть TextBlock, который должен выводить данные с помощью Binding. Но он будто не видит, то что должен выводить. Подскажите, пожалуйста, как исправить?

       <TextBlock Grid.Row="0" Grid.Column="0" Text="Подписка:" FontWeight="Bold" FontSize="12" Foreground="White"/>
            <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding ItemModel.Name}" FontWeight="Bold" FontSize="12" Foreground="White"/>
                            <TextBlock Grid.Row="1" Grid.Column="0" Text="Цена:" FontWeight="Bold" FontSize="12" Foreground="White"/>
            <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding ItemModel.Price, StringFormat={}{0} руб}" FontWeight="Bold" FontSize="12" Foreground="White"/>
                            <TextBlock Grid.Row="2" Grid.Column="0" Text="Срок подписки:" FontWeight="Bold" FontSize="12" Foreground="White"/>
            <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding ItemModel.Time, StringFormat={}{0} Месяц}" FontWeight="Bold" FontSize="12" Foreground="White"/>
                            <TextBlock Grid.Row="3" Grid.Column="0" Text="Тема:" FontWeight="Bold" FontSize="12" Foreground="White"/>
            <TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding ItemModel.Topic}" FontWeight="Bold" FontSize="12" Foreground="White"/>
                            <TextBlock Grid.Row="4" Grid.Column="0" Text="Автор:" FontWeight="Bold" FontSize="12" Foreground="White"/>
            <TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding ItemModel.Author}" FontWeight="Bold" FontSize="12" Foreground="White"/>

ItemModel берёт всё из базы данных.

 public int id { get; set; }
    private string name, topic, author;
    private int price, time;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    public int Price
    {
        get { return price; }
        set { price = value; }
    }

    public int Time
    {
        get { return time; }
        set { time = value; }
    }

    public string Topic
    {
        get { return topic; }
        set { topic = value; }
    }
    public string Author
    {
        get { return author; }
        set { author = value; }
    }

    public ItemModel() { }

    public ItemModel(string name, int price, int time, string topic, string author)
    {
        this.name = name;
        this.price = price;
        this.time = time;
        this.topic = topic;
        this.author = author;
    }

  • 1
    Недостаточно информации, чтобы понять, в чем проблема. DataContext настроен? Почему у вас модель исполняет роль вью-модели? Если данные меняются после создания экземпляра модели, то нужно реализовать INotifyPropertyChanged, чтобы интерфейс увидел эти изменения. Если данные не меняются, то зачем реализованы сеттеры в свойствах? – aepot Jun 09 '21 at 10:54
  • Да, данные меняются, у меня есть добавление и удаление подписок. Также DataContext реализован. Получается нужно реализовать INotifyPropertyChanged, чтобы заработало? – Dr. Crow Jun 09 '21 at 11:24
  • Что у вас заданно в DataContext? Есть ли в том классе публичное свойство с типом ItemModel и аналогичным названием (аля public ItemModel ItemModel { get;})? – EvgeniyZ Jun 09 '21 at 11:30
  • Первоначально у меня в DataContext загоняется DataContext="{Binding Source={x:Static local:Samples.SamplePost}}" А в Samples хранится первоначальная информация
    public static ItemModel SamplePost => new ItemModel() { Name = "Газета Правда", Price = 1000, Time = 1, Topic = "Новости", Author = "Россия" };
    – Dr. Crow Jun 09 '21 at 11:35
  • 1
    Почему у вас это все static? Статику не место в проекте! Ну и также посмотрите внимательно на свой код, повторю вопрос "У вас есть в SamplePost публичное свойство с типом ItemModel и аналогичным именем?" Я этого не вижу, вижу, что SamplePost и есть ItemModel, тогда почему привязка у вас идет так ItemModel.Name, а не так Name? – EvgeniyZ Jun 09 '21 at 11:39
  • ItemModel.Name это были старые пробы, а так у меня было без ItemModel, но не работало. И подскажите, что использовать вместо static? – Dr. Crow Jun 09 '21 at 11:41
  • @Dr.Crow не совсем в тему, но вот рабочий пример https://ru.stackoverflow.com/a/1266479/373567 – aepot Jun 09 '21 at 11:43
  • но не работало - это не объяснение. Добавляйте в вопрос все необходимое, все ваши попытки, показывайте как задаете DataContext, показывайте как инициализируете все типы, показывайте привязки. что использовать вместо static - ничего? Статик либо есть, либо его нету, а быть его у вас не должно! – EvgeniyZ Jun 09 '21 at 11:43
  • 1
    Всё заработало! После того, как убрал ItemModel стало выдавать ошибку XDG0008, я ткнул на неё и нашёл решение, а именно - удаление папки .vs и пересборка. Теперь всё выводится, спасибо за помощь! Остаётся теперь добавление правильно сделать, чтобы не только Sample показывался, но и то, что добавил. – Dr. Crow Jun 09 '21 at 11:48

0 Answers0