Привязка к Code Behind не будет работать

I have a button, which calls a method that populates a List with paths to images. I am trying to update a Windows 8 app each time this method is called to show all of the images produced. Currently it will not show anything, despite simply hardcoding the image path into the List

Мой код XAML для отображения изображений:

        
            
                
                    
                
            
        

И в Xaml.cs:

public sealed partial class MainPage : TestApp.Common.LayoutAwarePage
{

    public List test = new List();
    public MainPage()
    {
        test.Add("C:\\Users\\user\\Pictures\\image.jpg");
        this.InitializeComponent();
    }
}

Что я сделал неправильно/нуждается в изменении здесь? Огромное спасибо :).

1
nl ja de

1 ответы

Вам необходимо установить DataContext вашего MainPage. Поместите это на свой MainPage xaml.

DataContext="{Binding RelativeSource={RelativeSource Self}}"

EDIT: вам нужно иметь свойство на вашем коде, а не поле:

public List test {get; set;}
public MainPage()
{
    test = new List();
    test.Add("C:\\Users\\user\\Pictures\\image.jpg");
    this.InitializeComponent();
}
3
добавлено
Большое спасибо за ответ ... Я добавил это, и изображение все еще не появляется :(
добавлено автор Simon Kiely, источник
К сожалению, ничего не появляется. Это сообщение об ошибке, появившееся в окне «Вывод» (большое спасибо за то, что он сказал мне, чтобы проверить это также, я не понял, что связанные проблемы были выведены вообще!) Ошибка: ошибка пути BindingExpression: свойство «test» не найдено на «TestApp». Главная страница'. BindingExpression: Path = 'test' DataItem = 'TestApp.MainPage'; целевым элементом является «Windows.UI.Xaml.Controls.ItemsControl» (Name = 'null'); target является «ItemsSource» (тип «Object»)
добавлено автор Simon Kiely, источник
Огромное спасибо. Очень благодарен :)
добавлено автор Simon Kiely, источник
Теперь я получаю сообщение об ошибке Ошибка: конвертер не смог преобразовать значение типа «Windows.Foundation.IReference 1 'для ввода« ImageSource »; BindingExpression: Path = '' DataItem = 'Windows.Foundation.IReference 1 '; целевым элементом является «Windows.UI.Xaml.Controls.Image» (Name = 'null'); target является «Source» (тип «ImageSource»). Но, по крайней мере, привязка работает! :)
добавлено автор Simon Kiely, источник
Получаете ли вы какие-либо ошибки привязки в окне вывода? Есть ли, по крайней мере, предметы, появляющиеся сейчас в ItemsControl, но просто без изображений?
добавлено автор Thelonias, источник
Ох ... это потому, что у вас есть общественное ПОЛЕ на ваш код ... не общественная собственность. Я отредактирую свой ответ, чтобы было ясно.
добавлено автор Thelonias, источник
Хорошо, я предлагаю вам опубликовать отдельный вопрос о SO для последней проблемы. Я не программировал Windows 8, поэтому я не знаю, что изменилось в отношении путей установки изображений. Поскольку вы теперь можете видеть элементы в вашем ItemsControl, я думаю, ваш оригинальный вопрос был дан ответ?
добавлено автор Thelonias, источник
Ваша собственность должна быть типа BitmapImage not string
добавлено автор Denis, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Про Windows
Про Windows
941 участник(ов)

Microsoft Windows и всё, что с этим связано. Список интересных групп и каналов: https://github.com/goq/telegram-list

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot