XAML
<ListBox ItemsSource="{Binding}" HorizontalContentAlignment="Left" x:Name="lstbxindex" SelectionMode="Extended" Foreground="White" FontSize="20px" Height="241" BorderBrush="#555555" Margin="10,34,16,0" VerticalAlignment="Top" Width="322" Background="#555555"
<ListBox.ItemTemplate>
<DataTemplate>
<WrapPanel Orientation="Horizontal" Margin="5" >
<Label x:Name="items" Content="{Binding ProjectRow.Name}" Margin="35,0,0,0" MouseDoubleClick="items_MouseDoubleClick" Foreground="White"></Label>
</WrapPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
当我双击列表框项时,标签变成了一个文本框,使用这个文本框改变了被选中的列表框项。然后我点击输入文本框再次变成一个标签。如何在绑定(bind)代码隐藏值的列表框中添加动态文本框。
最佳答案
你想要这样的东西。将两个控件放在数据模板中,其中一个已折叠。
然后在后面的代码中切换可见性属性。两者都绑定(bind)到相同的属性,因此会彼此保持同步。
XAML
<TextBlock Visibility="Visible" Name="TextBlockName" Text="{Binding ProjectRow.Name}" MouseDown="TextBlockName_OnMouseDown" ToolTip="Double click to edit"/>
<TextBox Visibility="Collapsed" Name="TextBoxName" Text="{Binding ProjectRow.Name, UpdateSourceTrigger=PropertyChanged}"/>
代码隐藏
private void TextBlockName_OnMouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ClickCount == 2)
{
this.TextBlockName.Visibility = Visibility.Collapsed;
this.TextBoxName.Visibility = Visibility.Visible;
}
}
private void TextBoxName_OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
this.TextBlockName.Visibility = Visibility.Visible;
this.TextBoxName.Visibility = Visibility.Collapsed;
}
关于c# - 在列表框内添加一个动态文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42129542/