У меня есть текстовое поле и кнопка внутри списка в приложении WPF. Теперь у меня есть сценарий, например, когда я нажимаю кнопку, текстовый блок должен находиться в режиме редактирования, а кнопка - в скрытом состоянии. После того, как пользователь завершит редактирование (в текстовом поле вызывается событие нажатия клавиши), кнопка должна быть в видимом режиме. Я вызываю событие щелчка на кнопке и делаю его скрытым, теперь мне нужно получить доступ к текстовому полю внутри функции события щелчка, чтобы сделать его в редактируемом режиме (только для чтения false). Таким же образом, когда я закончу редактирование, мне нужно вызвать кнопку внутри обработчика событий Keyup текстового поля, чтобы сделать кнопку видимой. Но я не получаю элементы управления в коде. Я знал, что привязка DataTemplate представления списка вызывает эту проблему. Итак, чтобы сделать кнопку видимой, я выполнил следующий код, и он работает.
private void controlEdit_Click_1(object sender, RoutedEventArgs e)
{
var edtBtn = sender as Button;
if (edtBtn != null)
{
edtBtn.Visibility = Visibility.Hidden;
}
}
Но я не знаю, как вызвать эту кнопку внутри своего текстового поля Обработчик событий Keyup, точно так же, как текстовое поле внутри обработчик события нажатия этой кнопки. Мой список XAML и обработчик событий KeyUp добавляются.
XAML
<ListBox x:Name="ElList" Height="auto" Width="300" Background="Transparent" DataContext="{Binding collec}" ItemsSource="{Binding collec}" Grid.Row="0" Margin="31 3" HorizontalAlignment="Left">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBox x:Name="controltext" Width="153.7" Height="24.4" BorderBrush="#ffffff" FontFamily= "{StaticResource MontserratMedium}" Padding="2 0 0 0 " Text="{Binding ElName, Mode=TwoWay}" VerticalAlignment="Center" IsReadOnly="False" KeyDown="controltext_KeyDown" KeyUp="controltext_KeyUp" LostKeyboardFocus="controltext_LostKeyboardFocus"/>
<Button x:Name="controlEdit" Style="{StaticResource ImageButtonStyle}" Margin="3 0 0 0 " Click="controlEdit_Click_1">
<Image x:Name="featherImg" Source="Resources\feather_edit-3.png" Height="11" Width="11"/>
</Button>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Обработчик события TextBox KeyUp
private void controltext_KeyUp(object sender, KeyEventArgs e)
{
string NewName = ((System.Windows.Controls.TextBox)sender).Text;
//Make the button visble.
}
Итак, предложите мне способ доступа к текстовое поле внутри обработчика события нажатия кнопки и так же, как кнопка внутри текстового поля KeyUp.