2014-01-24 44 views
0

我想獲取嵌套的類屬性值並將其顯示在列表框項目中。但似乎我的做法可能是錯誤的。在嵌套成員列表框中綁定文本塊

這裏是列表框的XAML

<ListBox x:Name="lsbQuranData" Grid.Row="2" Foreground="Black" ScrollViewer.VerticalScrollBarVisibility="Visible" Style="{StaticResource ListBoxStyle1}" > 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Width="480"> 
       <local:SuraWithProgressBar Width="480" SuraNumber ="{Binding Chapter.SuraNumber, Mode=TwoWay}" 
       SuraName="{Binding Chapter.SuraTName}" Available="{Binding Available, Mode=TwoWay}" /> 
       <Line X1="0" X2="480" Y1="0" Y2="0" VerticalAlignment="Bottom" StrokeThickness="2" Stroke="Black" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

的類

public class Chapter 
{ 
    private string _suraName, _type, _ename, _tname; 
    byte _suraNumber, _ruku; 
    Int16 _order, _start, _ayas; 

    public string SuraTName 
    { 
     get { return _tname; } 
     set { _tname = value; } 
    } 

    public Byte SuraNumber 
    { 
     get { return _suraNumber; } 
     set { _suraNumber = value; } 
    } 
} 

public class ChapterSetting 
{ 
    Chapter _chapter; 
    string _available; 

    public Chapter Chapter 
    { 
     get { return _chapter; } 
     set { _chapter = value; } 
    } 

    public string Available 
    { 
     get { return _available; } 
     set { _available = value; } 
    } 
} 

數據列表框綁定

lsbQuranData.ItemsSource = ds.getQuranSuraSetting(); 

方法 「getQuranSuraSetting」 返回我需要的所有值,但它不能綁定兩個字段(SuraName,SuraNumber)。

是否有可能將嵌套類成員與列表框項綁定?

謝謝!

+0

是的,這是可能的,你的語法是正確的。雖然'SuraNumber'不是'Chapter'類的屬性。 – McGarnagle

+0

謝謝,它在那裏,對不起,我只是從這裏清理其他屬性,只粘貼SuraTName屬性。這兩個屬性不具有約束力。 (我編輯了這個問題) – ARH

+0

你綁定到類型爲「ObservableCollection '的lsbQuranData.ItemsSource列表嗎? –

回答

0

您沒有顯示從ds.getQuranSuraSetting()返回的內容。如果它是IEnumerable<ChapterSetting>.

那麼XAML應該工作。

CODE

<StackPanel Width="480"> 
    <local:SuraWithProgressBar Width="480" 
           SuraNumber ="{Binding Chapter.SuraNumber, Mode=TwoWay}" 
           SuraName="{Binding Chapter.SuraTName}" Available="{Binding Available, Mode=TwoWay}" /> 
    <Line X1="0" X2="480" Y1="0" Y2="0" 
     VerticalAlignment="Bottom" StrokeThickness="2" 
     Stroke="Black" /> 
</StackPanel> 

你沒給我們爲您定製的控制(SuraWithProgressBar)的代碼,所以這是很難說,如果你在你的SuraNumber和SuraName性能有任何錯誤。

另外,如果你在你的SuraWithProgressBar控制使用的TextBlocks,驗證他們的前景屬性未設置爲相同的顏色與網頁背景,否則你不會看到綁定的數據

+0

謝謝Ritscher,我解決了它,我在我的問題中添加了我的評論。 – ARH