2011-01-26 77 views
0

我有一個Wpf列表框。我直接添加項目到這個列表框。我添加了一個運行items.clear()命令的清除按鈕,它將刪除所有項目。但是,當重新啓動應用程序時,所有項目都回到列表中!它們存儲在什麼地方,如果是的話,我該如何禁用它?WPF列表框項目被清除,但重新出現在重新啓動

另一個問題:是否可以將數據模板應用於項目直接添加和未綁定的列表框?

代碼例如:

<ListBox x:Name="Results" Margin="222,31,8,44" /> 

Midiinput.ChannelMessageReceived += delegate(object sender, ChannelMessageEventArgs e) 
{ 
    string result = e.Message.MessageType.ToString() + " " + e.Message.Command.ToString() + " " + e.Message.Data1.ToString() + " " + e.Message.Data2.ToString(); 
    Results.Items.Add(result); Clearbutton.IsEnabled = true; 
}; 
+0

如何/在哪裏添加項目到列表框? – 2011-01-26 22:05:21

+0

在代碼中:我等待C#Midi工具包錄製MIDI信息,然後使用items.add(字符串) – internetmw 2011-01-26 22:06:12

+0

以編程方式將信息內容作爲字符串添加到列表中。其狀態不是持久的。 – 2011-01-26 22:07:47

回答

0

列表框項不會保持(如在實際上任何其他屬性)。 你如何填充你的列表框?有沒有後端存儲?

我猜你的應用程序只是在標記中聲明瞭一些項目,當應用程序啓動時,列表項目將被解析。

0

如果項目在您重新啓動應用程序時返回,我認爲以下幾種情況是正確的: 1)您正在使用Items屬性填充列表框,並使用Items屬性並手動輸入字符串到集合中。 2)您正在運行從存儲位置填充列表的代碼,無論是在代碼中還是在文件中。

-C

0

關於第二個問題

可以一個DataTemplate應用於 列表框中哪些項目是直接 加入,而不是約束?

在UI生成期間,ListBox的ItemTemplate被複制到ListBoxItem的ContentTemplate。但是,直接添加ListBoxItems時,對於ItemsControl的容器類型(ListBoxItem)中已有的項目,ItemTemplate將被忽略。因此,您必須改用ContentTemplateListBoxItem。這裏有一個例子

<ListBox> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Setter Property="ContentTemplate"> 
       <Setter.Value> 
        <DataTemplate> 
         <TextBlock Foreground="Green" Text="{Binding}"/> 
        </DataTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ListBox.ItemContainerStyle> 
    <ListBoxItem Content="Item 1"/> 
    <ListBoxItem Content="Item 2"/> 
    <ListBoxItem Content="Item 3"/> 
</ListBox> 

對於您的問題與重新出現的重新啓動您的應用程序時,項目:

我會嘗試找到你的項目添加到您的ListBox中的所有地方代碼隱藏(搜索Results.Items.Add)。添加一個斷點到每個地方,以便在調試器中查看時添加它們。除非你實現這個功能,否則ListBox本身不會有任何關於它關閉時的樣子的內存。

如果這不起作用,請嘗試將ListBox的名稱更改爲ResultsTest或其他東西,通過註釋掉所有引用ListBox的代碼並再次運行該程序來編譯並修復所有的錯誤。這應該會讓您在ListBox中沒有任何項目。在此之後,開始取消註釋代碼,一步一步,直到找到錯誤的位置。