2015-03-02 60 views
0

我正在使用wp8應用程序。 其中一個屏幕應該有支點。兩個數據透視表項應該包含LongListSelectors(同樣的ItemTemplate,不同的ItemSource,但是對於這個例子相同的ItemSource)。LongListSelector不綁定到數據源

<phone:PivotItem x:Name="piSite" Header="{Binding Path=LocalizedResources.FILTER_SITE, Source={StaticResource LocalizedStrings}}" Style="{StaticResource piStyleMaster}" FontFamily="{StaticResource PhoneFontFamilyNormal}"> 
    <phone:LongListSelector x:Name="lbSites" ItemTemplate="{StaticResource dtFilter}"/> 
</phone:PivotItem> 
<phone:PivotItem x:Name="piTags" Header="{Binding Path=LocalizedResources.FILTER_TAG, Source={StaticResource LocalizedStrings}}" Style="{StaticResource piStyleMaster}" FontFamily="{StaticResource PhoneFontFamilyNormal}"> 
    <phone:LongListSelector x:Name="lbTags" ItemTemplate="{StaticResource dtFilter}"/> 
</phone:PivotItem> 

這是我這些名單的DataTemplate:

<phone:PhoneApplicationPage.Resources> 
    <DataTemplate x:Key="dtFilter"> 
     <Grid x:Name="grFilter"> 
      <CheckBox x:Name="cbFilter" Content="{Binding filterName}" IsChecked="{Binding isChecked}" HorizontalAlignment="Left" VerticalAlignment="Top" BorderBrush="{StaticResource ForegroundThemeBrush}" Foreground="{StaticResource ForegroundThemeBrush}"/> 
     </Grid> 
    </DataTemplate> 
</phone:PhoneApplicationPage.Resources> 

,我使用的數據模型是:

public class CheckableFilter 
{ 
    public string filterName; 
    public bool isChecked; 
} 

,這裏是我如何設置的ItemSource:

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    var testItemSource = new ObservableCollection<CheckableFilter> 
     { 
      new CheckableFilter {filterName = "first name", isChecked = false}, 
      new CheckableFilter {filterName = "second name", isChecked = true}, 
      new CheckableFilter {filterName = "third name", isChecked = false}, 
      new CheckableFilter {filterName = "fourth name", isChecked = true}, 
      new CheckableFilter {filterName = "fifth name", isChecked = false} 
     }; 
    lbSites.ItemsSource = testItemSource; 
    lbTags.ItemsSource = testItemSource; 
     base.OnNavigatedTo(e); 
} 

順便說一句,前景a邊框顏色的CheckBoxes是藍色的,背景是白色的。

我得到了正確數量的元素,就像你在屏幕截圖上看到的那樣,它顯示了正確的複選框數量。問題是沒有filterName(CheckBox的內容)。

screenshot1

如果我排除的複選框內容綁定:

<phone:PhoneApplicationPage.Resources> 
    <DataTemplate x:Key="dtFilter"> 
     <Grid x:Name="grFilter" DataContext="{Binding}"> 
      <CheckBox x:Name="cbFilter" Content="Test Value" IsChecked="{Binding isChecked}" HorizontalAlignment="Left" VerticalAlignment="Top" BorderBrush="{StaticResource ForegroundThemeBrush}" Foreground="{StaticResource ForegroundThemeBrush}"/> 
     </Grid> 
    </DataTemplate> 
</phone:PhoneApplicationPage.Resources> 

我得到以下結果: screenshot2

我在做什麼錯了,所以我的結合是不工作的複選框內容在LLS dataTemplate中?

回答

2

您必須將CheckableFilter類的字段更改爲屬性,因爲綁定僅適用於屬性。

public class CheckableFilter 
{ 
    public string filterName { get; set; } 
    public bool isChecked { get; set; } 
} 

這也是一個很好的做法,用大寫字母命名屬性,但沒有必要。但是,如果您要這樣做,請記住在XAML中更新這些名稱。

+0

謝謝你的回答和建議。祝一切順利。 – Slavisa 2015-03-02 12:18:26