2017-05-29 27 views
0

我想要做的是:我想点击一个按钮,让我命名我的项目。该项目然后被添加到列表视图。你自己命名的项目(c#)

到目前为止,我可以添加项目的唯一方法是如果我直接在代码中命名它。 这里是我到目前为止的代码:

private void button_add(object sender, RoutedEventArgs e) 
    { 
     ListViewItem item = new ListViewItem(); 
     item.Content = "randommmmm"; 
     list1.Items.Add(item); 
    } 
+0

什么是应该当您单击按钮发生呢? – mm8

+0

会打开一个窗口,让我可以选择命名我的物品。所以我可以命名我的第一个项目猫,再次点击按钮并命名第二条狗。对于这个问题的糟糕解释抱歉。 – Gre3n

回答

1

这是一个非常基本的例子,应该给你的想法。

MainWindow.xaml.cs:

public partial class MainWindow: Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     popup.IsOpen = true; 
    } 

    private void txt_PreviewKeyDown(object sender, KeyEventArgs e) 
    { 
     if(e.Key == Key.Enter) 
     { 
      list1.Items.Add(txt.Text); 
      txt.Text = string.Empty; 
      popup.IsOpen = false; 
     } 
    } 
} 

MainWindow.xaml:

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:WpfApplication1" 
     mc:Ignorable="d" 
     Title="Window6" Height="300" Width="300"> 
    <StackPanel> 

     <ListView x:Name="list1" /> 

     <Popup x:Name="popup" Width="300" PlacementTarget="{Binding ElementName=btn}"> 
      <Border Background="White" BorderBrush="AliceBlue" BorderThickness="2"> 
       <TextBox x:Name="txt" Margin="10" PreviewKeyDown="txt_PreviewKeyDown" /> 
      </Border> 
     </Popup> 

     <Button x:Name="btn" Content="Add" Click="Button_Click" /> 

    </StackPanel> 
</Window> 

点击Button显示了TextBox,当你按下[Enter]文本在PopupTextBox被添加到ListView

如果你是认真的WPF和XAML我真的建议你学习MVVM设计模式,但这是另一个故事:)

+0

非常感谢! – Gre3n

1

您可以将文本框绑定到您的视图模型的属性。

<TextBox Text="{Binding ItemName}" /> 

private string itemName; 
public string ItemName 
{ 
    get { return itemName; } 
    set 
    { 
     if (value == null || value == itemName) return;    

     itemName = value; 
     NotifyOnPropertyChanged(nameof(ItemName)); 
    } 
} 

所以你可以使用ItemName来创建你的物品。

item.Content = ItemName;