Событие изменения свойства UWP не работает

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

В моей папке Models у меня есть класс под названием Locations

public class Locations: INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged = delegate { };
    locationManager loc = new locationManager();



    private void NotifyPropertyChanged(List<String> PropertyChangedList)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(Convert.ToString(PropertyChangedList)));
        }

    }

    public string locationColumn { get; set; }
    public int locationRow { get; set; }
    public string locationColumnImage { get; set; }
    public string baleInformation { get; set; }
    public int numberOfBales { get; set; }
    private List<String> columnList;
    public List<String> ColumnList
    {
        get
        {
            return columnList;
        }
        set
        {
            if (value != columnList)
            {
                columnList = value;
                NotifyPropertyChanged(ColumnList);
            }


        }
    }
}

тогда в том же файле.cs у меня есть другой класс (да, не очень хорошо, все еще выложит все)

public class locationManager
{   

    #region GetLocations
    public  List<Locations> getLocations()
    {

        Locations storeLocations = new Locations();

        //represents db value of how many items in a particlar location
        var baleCol = buildColumnList();          
        var location = new List<Locations>();

        location.Add(new Locations { locationColumn = "A", locationColumnImage = "Assets/A.jpg", numberOfBales = baleCol.Where(a => a != null && a.StartsWith("A")).Count() });
        location.Add(new Locations { locationColumn = "B", locationColumnImage = "Assets/B.jpg", numberOfBales = baleCol.Where(a => a != null && a.StartsWith("B")).Count() });
        location.Add(new Locations { locationColumn = "C", locationColumnImage = "Assets/c.jpg", numberOfBales = baleCol.Where(a => a != null && a.StartsWith("C")).Count() });
        location.Add(new Locations { locationColumn = "D", locationColumnImage = "Assets/D.jpg", numberOfBales = baleCol.Where(a => a != null && a.StartsWith("D")).Count() });
        location.Add(new Locations { locationColumn = "E", locationColumnImage = "Assets/E.jpg", numberOfBales = baleCol.Where(a => a != null && a.StartsWith("E")).Count() });
        location.Add(new Locations { locationColumn = "F", locationColumnImage = "Assets/F.jpg", numberOfBales = baleCol.Where(a => a != null && a.StartsWith("F")).Count() });
        location.Add(new Locations { locationColumn = "G", locationColumnImage = "Assets/G.jpg", numberOfBales = baleCol.Where(a => a != null && a.StartsWith("G")).Count() });
        location.Add(new Locations { locationColumn = "H", locationColumnImage = "Assets/h.jpg", numberOfBales = baleCol.Where(a => a != null && a.StartsWith("H")).Count() });
        location.Add(new Locations { locationColumn = "I", locationColumnImage = "Assets/I.jpg", numberOfBales = baleCol.Where(a => a != null && a.StartsWith("I")).Count() });
        location.Add(new Locations { locationColumn = "J", locationColumnImage = "Assets/J.jpg", numberOfBales = baleCol.Where(a => a != null && a.StartsWith("J")).Count() });
        location.Add(new Locations { locationColumn = "K", locationColumnImage = "Assets/K.jpg", numberOfBales = baleCol.Where(a => a != null && a.StartsWith("K")).Count() });
    return location;
    }
}

buildColumnList(); Метод, которому равен baleCol, - это просто метод, который создает список букв или комбинаций типа Bumber типа A1 или B15. эти данные будут извлечены из базы данных на более позднем этапе, поэтому метод будет заменен на Linq.

В моем MainPage.xamlУ меня есть элементы управления, которые я связываю следующим образом

<GridView ItemsSource="{x:Bind location, Mode=OneWay}" Margin="-5,0,5,0">
    <GridView.ItemTemplate>
        <DataTemplate  x:Name="columnTemplate" x:DataType="data:Locations">
            <StackPanel x:Name="columnStack">
                <Image Width="100" Source="{x:Bind locationColumnImage}"/>
                <TextBlock FontSize ="16" Text ="{x:Bind numberOfBales}" HorizontalAlignment="Center"/>                    
            </StackPanel>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>

а затем MainPage.xaml.cs имеет это

private List<Locations> location;
Locations baleLocations = new Locations();
locationManager manager = new locationManager();
int Count = 0; 
public MainPage()
{

    this.InitializeComponent();
    location = manager.getLocations();

}

Так что из того, что я прочитал, я думаю, что моя проблема может быть в контексте привязки / данных. Как и в MainPage.xaml, я объявляю ItemSource gridview как местоположение x:Bind, а затем в MainPage.xaml.cs я делаю location список типов Locations (класс со свойствами). Я устанавливаю это для метода в другом классе. Метод getLocations класса LocationManager

Таким образом, при загрузке формы все хорошо, я получаю необходимые данные, но я пытаюсь добиться того, чтобы при поиске обновлялась сетка, чтобы она содержала только элементы, относящиеся к тому, что я хочу найти. поэтому сетка должна быть обновлена, и именно здесь у меня возникают проблемы. На данный момент единственное, что изменится, это свойство columnList, так как я использую его для получения A1, B15, C24.

Фон:

Это хранилище, которое хранит запас в формате строки / столбца, так что A1 B2 и т. Д. При начальной загрузке отображаются все возможные местоположения столбцов с количеством элементов, связанных с этим столбцом, независимо от строки. On Найти, если мы ищем только воду столбцы с водой в одной из строк должны быть в сетке... это место, где должно происходить обновление / изменение свойства.

0 ответов

Другие вопросы по тегам