Обновить список wpf при изменении коллекции - PullRequest
0 голосов
/ 28 апреля 2018

Я использую настройки с коллекцией строк.

Я заполняю список следующей привязкой:

ItemsSource="{Binding QuadStash, Source={StaticResource Settings}, Mode=TwoWay}"

Когда я добавляю новую строку в коллекцию, элементы в списке не обновляются.

Что мне не хватает?

1 Ответ

0 голосов
/ 29 апреля 2018

Поскольку вы не предоставили код, который показывает, как вы создали StaticResource, я предполагаю, что вы хотите связать настройки напрямую из xaml.

Настройки привязки. По умолчанию из XAML

В первом случае добавьте пространство имен XML, которое указывает на пространство имен, в котором объявлен класс Settings:

xmlns:properties="clr-namespace:WpfSettings.Properties"

Затем вы можете связать свою коллекцию из настроек следующим образом:

ItemsSource="{Binding Source={x:Static properties:Settings.Default}, Path=Collection}"

Поскольку вы связываетесь непосредственно с коллекцией, которая объявлена ​​непосредственно в настройках, WPF не знает об обновлениях коллекции, если она не реализует INotifyCollectionChanged. Для решения этой проблемы вы можете создать ObservableCollection в настройках.

Создать ObservableCollection в настройках

Открыть настройки в редакторе XML и добавить новые настройки следующим образом:

<Setting Name="Collection" Type="System.Collections.ObjectModel.ObservableCollection&lt;System.String&gt;" Scope="User">
  <Value Profile="(Default)" />
</Setting>

Затем добавьте значение по умолчанию в редакторе настроек ( source ):

<?xml version="1.0" encoding="utf-16"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" />

В конце это может выглядеть так:

<Setting Name="Collection" Type="System.Collections.ObjectModel.ObservableCollection&lt;System.String&gt;" Scope="User">
  <Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema" /&gt;</Value>
</Setting>

Всякий раз, когда вы добавляете элементы в настройки вашей коллекции, ListBox также будет обновляться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...