2017-05-29 13 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

ウィンドウが開き、アイテムに名前を付けるオプションが表示されます。だから私は私の最初のアイテムの猫とボタンを再度クリックして2番目の犬の名前を付けることができます。問題の悪い説明を申し訳ありません。 – 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> 

あなたは[Enter]テキスト内を押したときに表示さButtonTextBoxPopupをクリックすると、 TextBoxListViewに追加されます。

あなたが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; 
関連する問題