我在ListBoxItem中有一个TextBox,它被禁用,所以我可以将它拖放到ListBox中。
现在,当我双击它时,我希望它被启用,这样我就可以编辑文本了,当我完成后我希望它再次被禁用以进行拖放。
我在ListBoxItem上有MouseDoubleClick事件,但我无法访问TextBox。任何人都可以告诉我如何实现这一目标。
目前在代码隐藏中无法识别textBox。似乎我无法按照我尝试的方式访问它。
XAML
fetch()
在视图中
<ListBox Name="Locations" Cursor="Hand" HorizontalAlignment="Left" Height="351" Margin="10,48,0,0" VerticalAlignment="Top" Width="285" ItemsSource="{Binding Locations}" IsSynchronizedWithCurrentItem="True" dd:DragDrop.IsDragSource="True"
dd:DragDrop.IsDropTarget="True" SelectedItem="{Binding SelectedItem}">
<ListBox.InputBindings>
<KeyBinding Key="Delete" Command="{Binding DeleteLocationCommand}" />
</ListBox.InputBindings>
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<EventSetter Event="MouseDoubleClick" Handler="ListBoxItem_MouseDoubleClick"/>
<EventSetter Event="LostFocus" Handler="ListBoxItem_LostFocus"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBox Name="textBox" Text="{Binding Path=Name}" IsHitTestVisible="False" Width="270" Background="Transparent" BorderThickness="0" Margin="2"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
答案 0 :(得分:0)
您可以使用ReadOnly属性,这将阻止用户对文本进行任何更改:
texBox.ReadOnly = true;
和
private void changeText(object sender, EventArgs e)
{
(sender as TextBox).ReadOnly = false;
}