2016-04-25 9 views
0

私はListBoxを持っています。TextBoxesの2つのデータをボタンをクリックして入力したいと思います。私は問題が異なるtextblockから来ると思う私は私のlistboxにある。ここで私はイメージで何をしたいです: TheUIlistboxMainWindow.xaml2つのテキストボックスからDataBindingを使用してListBoxを入力する

<ListBox x:Name="listBox" 
       ItemsSource="{Binding Issues}" Grid.Column="1" HorizontalAlignment="Left" Height="366" VerticalAlignment="Top" Width="453" Margin="0,0,-1,0"> 
     <StackPanel Margin="3"> 
      <DockPanel > 
       <TextBlock FontWeight="Bold" Text="Issue:" 
       DockPanel.Dock="Left" 
       Margin="5,0,10,0"/> 
       <TextBlock Text=" " /> 
       <TextBlock Text="{Binding Issue}" Foreground="Green" FontWeight="Bold" /> 
      </DockPanel> 
      <DockPanel > 
       <TextBlock FontWeight="Bold" Text="Comment:" Foreground ="DarkOrange" 
       DockPanel.Dock="Left" 
       Margin="5,0,5,0"/> 
       <TextBlock Text="{Binding Comment}" /> 

      </DockPanel> 
     </StackPanel> 
    </ListBox> 

マイMainWindow.xaml.cs

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


    public sealed class ViewModel 
    { 
     public ObservableCollection<Issue> Issues { get; private set; } 

     public ViewModel() 
     { 
      Issues = new ObservableCollection<Issue>(); 
     } 
    } 

    private void addIssue_Click(object sender, RoutedEventArgs e) 
    { 
     var vm = new ViewModel(); 
     vm.Issues.Add(new Issue { Name = "Jon Skeet", Comment = "lolilol" }); 
     DataContext = vm; 
     InitializeComponent(); 
    } 
} 

マイIssue.cs

public sealed class Issue 
{ 

    public string Name { get; set; } 
    public string Comment { get; set; } 
} 

私はドンをこのチュートリアルに従うけどデータベースを実装したくない: Tuto 私もこれを試してみようstackoverflow question エラーは'System.InvalidOperationException'The Items collection must be empty to use ItemsSource ですが、これは問題の中心です。

+0

なぜボタンをクリックするたびにデータコンテキストを設定していますか? – Pikoh

+0

ボタンを押すたびにIssue/Commentのペアを追加したいので、 – Babuh

+0

する必要はありません。 ObservableCollectionは、新しいIssueが追加されるたびにUIを更新します。 – Pikoh

答えて

0

それはItemsコレクションの一部として扱われるようあなたは、<ListBox> and </ListBox>間に挿入されているものは何でも削除します。

代わりに、その内容を<ListBox.ItemTemplate>...</ListBox.ItemTemplate>に移動します。

+0

それは完璧に動作します!どうもありがとう ! – Babuh

0

あなたは少なくともContextInitializeComponentを更新する必要はありません。

public partial class MainWindow : Window 
{ 
    ViewModel vm = new ViewModel(); 
    public MainWindow() 
    { 
     InitializeComponent(); 
     DataContext = vm; 
    } 


    public sealed class ViewModel 
    { 
     public ObservableCollection<Issue> Issues { get; private set; } 

     public ViewModel() 
     { 
      Issues = new ObservableCollection<Issue>(); 
     } 
    } 

    private void addIssue_Click(object sender, RoutedEventArgs e) 
    {  
     vm.Issues.Add(new Issue { Name = "Jon Skeet", Comment = "lolilol" });  
    } 
} 
+0

私はもうエラーはありませんが、これは 'Listbox'に何も追加しません:/ 編集:まあ私の悪い私は同じエラーがあり、これはもうウィンドウを開きません – Babuh

関連する問題