Я хочу обновить текст в выпадающем списке. Тем не менее, когда я пытаюсь установить его значение в коде позади, я получаю сообщение об ошибке «Имя« DateChosen »не существует в текущем контексте».x: Имя не существует в текущем контексте, но его родительский
код позади:
private void updateDateBinding()
{
lstMenus.Visibility = Visibility.Visible;
dateChosen.Text = ""; // <-- Error here
}
Xaml код:
<ListView x:Name="lstMenus">
<!-- ...other code... -->
<TextBox x:Name="dateChosen" IsReadOnly="True"
Text="{Binding getDateChosen, Mode=TwoWay}"/>
<!-- ...other code... -->
</ListView>
Первоначально я только собирался использовать событие PropertyChanged обновить 'dateChosen', но это не обновлялись при вызове этого события. Поэтому я решил установить значение явно вместо этого, только чтобы найти эту проблему.
Что меня смущает, так это то, что «lstMenus» можно изменить точно так, как я ожидал. Как мой ListView существует, но не TextBox внутри него?
-
PS: Я вырезать большую часть лишнего кода из этого (высота/ширина, фон, выравнивание, и т.д.), но я чувствую, что я должен упомянуть, что TextBox в вопрос довольно глубоко вложенными в этом фрагменте кода. Полное наследование:
ListView (lstMenus) - ListView.ItemTemplate - DataTemplate - StackPanel - Сетка - Сетка - AppBarButton - AppBarButton.Flyout - Flyout - Сетка - Сетка - TextBox (dateChosen)
Я пробовал устанавливая свойство «x: Name» для некоторых промежуточных тегов, но всегда получайте то же самое «не в текущем контексте», когда я пытаюсь получить их от кода позади.
«DataTemplate» не так «лишний», как вы себе представляли. «DataTemplate» может быть запрограммирован нулевым временем, раз или тысячу раз. Какого из этих нулевых или более экземпляров «dateChosen» вы ожидали, что будете взаимодействовать, и как вы ожидали, что структура угадает ответ на этот вопрос? –
Если вы используете шаблоны, вы должны делать этот стиль MVVM, а не стиль winforms-event-handler (который в лучшем случае очень плохо работает с XAML). –
Я старался, чтобы выбор был видимым перед добавлением/сохранением выбора во всем остальном классе «Меню», но на основании того, что @EdPlunkett сказал, что мне кажется, что мне нужно поместить его в свой класс меню, прежде чем я смогу надежно отобразите его. –