Список BLOB-объектов Azure в ListBox в приложении WPF - PullRequest
1 голос
/ 26 апреля 2019

У меня есть ListBox в приложении WPF, где я хочу перечислить все BLOB-объекты, хранящиеся в Azure.Код ниже - это то, что я сейчас пытаюсь, но безуспешно.

Код из xaml.cs

 public ObservableCollection<string> Blobs = new ObservableCollection<string>();

    private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        const string StorrageAccountName = "****";
        const string StorageAccountKey = "****==";

        var storageAccount = new CloudStorageAccount(
        new Microsoft.Azure.Storage.Auth.StorageCredentials(StorrageAccountName, StorageAccountKey), true);


        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer container = blobClient.GetContainerReference("****");


        var description = string.Empty;

        foreach (IListBlobItem item in container.ListBlobs(null, false))
        {
            if (item.GetType() == typeof(CloudBlockBlob))
            {
                CloudBlockBlob blob = (CloudBlockBlob)item;
                description = $"Block blob of length {blob.Properties.Length}: {blob.Uri}";
            }
            else if (item.GetType() == typeof(CloudPageBlob))
            {
                CloudPageBlob pageBlob = (CloudPageBlob)item;
                description = $"Page blob of length {pageBlob.Properties.Length}: {pageBlob.Uri}";
            }
            else if (item.GetType() == typeof(CloudBlobDirectory))
            {
                CloudBlobDirectory directory = (CloudBlobDirectory)item;
                description = $"Directory: {directory.Uri}";
            }

            Blobs.Add(description);
        }
    }

Код изменен с .xaml

<ListBox ItemsSource="{Binding Blobs}" HorizontalAlignment="Left" Height="323" Grid.RowSpan="3" VerticalAlignment="Top" Width="267" SelectionChanged="ListBox_SelectionChanged" Margin="0,-4,0,0" IsSynchronizedWithCurrentItem="True"  /> 

1 Ответ

1 голос
/ 26 апреля 2019

В данный момент вы просто записываете свои описания в консоль, а не в представление WPF.

Вам необходимо добавить свои описания в коллекцию ObservableCollection, которую представление может привязать к

Измените свой код на

//This is the collection containing your descriptions
public ObservableCollection<string> Blobs = new ObservableCollection<string>();

private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{

    const string StorrageAccountName = "****";
    const string StorageAccountKey = "*****==";

    var storageAccount = new CloudStorageAccount(
        new Microsoft.Azure.Storage.Auth.StorageCredentials(StorrageAccountName, StorageAccountKey), true);



    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

    CloudBlobContainer container = blobClient.GetContainerReference("***");


    var description = string.Empty;

    foreach (IListBlobItem item in container.ListBlobs(null, false))
    {
        if (item.GetType() == typeof(CloudBlockBlob))
        {
            CloudBlockBlob blob = (CloudBlockBlob)item;
            description = $"Block blob of length {blob.Properties.Length}: {blob.Uri}";
        }
        else if (item.GetType() == typeof(CloudPageBlob))
        {
            CloudPageBlob pageBlob = (CloudPageBlob)item;
            description = $"Page blob of length {pageBlob.Properties.Length}: {pageBlob.Uri}";
        }
        else if (item.GetType() == typeof(CloudBlobDirectory))
        {
            CloudBlobDirectory directory = (CloudBlobDirectory)item;
            description = $"Directory: {directory.Uri}";
        }

        // add your descriptions to the collection
        Blobs.Add(description);
    }
}

И измените свой ListControl на

<ListControl ItemsSource="{Binding Blobs}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...