Как привязать static ObservableCollection к GridView

469
15 февраля 2017, 20:48

Не обновляется UI при изменении коллекции.

Код класса

public static class Contractors
{
    static ObservableCollection<Contractor> ContractorsList;
    public static ObservableCollection<Contractor> CONTRACTORS
    {
        get { return ContractorsList; }
    }
}

Код xaml

<telerik:RadGridView 
 x:Name="contractorsTable" 
 Grid.Row="1" 
 AutoGenerateColumns="False"
 FontSize="12px"
 IsReadOnly="True"
 ShowSearchPanel="True"
        SelectionMode="Extended"
        MouseDoubleClick="ContractorsTable_OnMouseDoubleClick"  
        ItemsSource="{Binding Source={x:Static zaDelo:Contractors.CONTRACTORS}}"
        >
        <telerik:RadGridView.Columns>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding IdContractors}" Header="Код" Width="45" ShowDistinctFilters="False" IsFilterable="False"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Iname}" Header="Наименование" Width="2*" IsFilterable="False"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding BidPrice}" Header="Цена" Width="45" IsFilterable="False"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Phone}" Header="Телефон" IsFilterable="False" Width="*" IsSortable="False"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Email}" Header="Email" IsFilterable="False" IsSortable="False" />
            <telerik:GridViewDataColumn DataMemberBinding="{Binding UserName}" Header="ОТВ" Width="50" TextAlignment="Center" IsFilterable="False"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding City}" Header="Город" Width="60" IsFilterable="False"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Region}" Header="Район" Width="60" IsFilterable="False"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Loyalty}" Header="Лояльность" Width="60" IsFilterable="False"/>
            <telerik:GridViewDataColumn Header="" CellStyleSelector="{StaticResource ClientBonusS}" Width="15"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding IdCart}" Header="Карта" Width="45" TextAlignment="Center" IsFilterable="False"/>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding ContractorGroup}" Header="Назначение" Width="*" IsFilterable="False"/>
        </telerik:RadGridView.Columns>
    </telerik:RadGridView>

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

Answer 1

ObservableCollection оповещает об изменении самой коллекции (добавление, удаление и т.п.). Если вы хотите видеть изменение элемента в коллекции, тогда сам элемент должен реализовывать интерфейс INotifyPropertyChanged. То есть:

public class Contractor : INotifyPropertyChanged
{
    ...
}
READ ALSO
Генерация &lt;option&gt; для datalist ASP.NET

Генерация <option> для datalist ASP.NET

привет! есть код

388
Динамическое создание PictureBox N-го количества

Динамическое создание PictureBox N-го количества

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

380
Запрос к Many-To-Many используя Linq

Запрос к Many-To-Many используя Linq

Имею такие таблицы созданые через EF

378
Как сделать backup/restore базы MSSQL программно

Как сделать backup/restore базы MSSQL программно

Как можно сделать backup/restore базы данных MSSQL программно на C#? Пользователь выбирает место сохранения (например, флешку) и база сохраняется

395