2012-05-11 68 views
0

在我的代碼隱藏我已經中類以下內容:綁定一個ObservableCollection <int>到標籤

public ObservableCollection<int> ints; 

它的值是在構造函數初始化:

ints = new ObservableCollection<int>(); 

我再結合一個標籤ints

<Label Name="label" Content="{Binding Source={StaticResource ints}, Path=Count}"/> 

運行程序後,一個XamlParseException發生:

System.Windows.StaticResourceExtension '上提供值 '' 拋出 例外'。行號「12」和行位置「20」。

我想這個綁定行有問題。有什麼建議麼?

說明問題的完整演示程序如下:

XAML:

<Window x:Class="BindingObservableCollectionCountLabel.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 

    <DockPanel>    
     <StackPanel> 
      <TextBox Name="textBox" Text="10"/> 
      <Button Name="add" Click="add_Click" Content="Add"/> 
      <Button Name="del" Click="del_Click" Content="Del"/> 
      <Label Name="label" Content="{Binding Source={StaticResource ints}, Path=Count}"/> 
     </StackPanel>    
    </DockPanel> 
</Window> 

C#:

using System; 
using System.Windows; 
using System.Collections.ObjectModel; 

namespace BindingObservableCollectionCountLabel 
{ 
    public partial class MainWindow : Window 
    { 
     public ObservableCollection<int> ints; 

     public MainWindow() 
     { 
      InitializeComponent(); 

      ints = new ObservableCollection<int>(); 
     } 

     private void add_Click(object sender, RoutedEventArgs e) 
     { 
      ints.Add(Convert.ToInt32(textBox.Text)); 
     } 

     private void del_Click(object sender, RoutedEventArgs e) 
     { 
      if (ints.Count > 0) ints.RemoveAt(0); 
     } 
    }  
} 
+0

OK,尋找到這以後,我看到的問題是,'ints'沒有被定義爲資源。現在正在研究如何做到這一點...... – dharmatech

回答

2

如果具有資源集合不是必需的,請執行下列操作:

  1. 變化結合

    <Label Name="label" 
         Content="{Binding Path=ints.Count, 
             RelativeSource={RelativeSource AncestorType=Window}}"/> 
    
  2. ints屬性:

    public ObservableCollection<int> ints { get; private set; }

如果你需要這個集合,是資源,你的窗口構造切換到

public MainWindow() 
{ 
    // line order is important! 
    Resources.Add("ints", ints = new ObservableCollection<int>()); 
    InitializeComponent(); 
} 

,並留下XAML不變

+0

Thanks max! C#代碼片段做了訣竅。 – dharmatech

1

你綁定的命令是錯誤的。

Content="{Binding ints.Count}" 
+0

嗯......改變'內容'這似乎沒有幫助。 – dharmatech

相關問題