c# - 在列表框内添加一个动态文本框

标签 c# wpf

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/

相关文章:

c# - 方法适用于模拟器但不适用于 Microsoft Surface 设备?

c# - 如何在 C# 中测试 View 模型是否处于设计器模式

c# - 检查 map 上的地理 GPS 点(纬度、经度)是否在定义的矩形内

c# - WPF 中类似 Google map 的滚动面板

wpf - DependencyProperty 未触发

c# - 在 WPF 中的所有窗口上捕获组合键而不在每个窗口上添加事件

c# - raid 中的物理序列号 (windows)

c# - 使用 Entity Framework 调用存储过程并从 WCF 安全返回的更好方法?

c# - WPF 中的事件处理

wpf - xamDataTree 开始编辑代码中的节点