[英]LongListSelector not binding to datasource
我正在使用wp8應用程序。 屏幕之一應具有樞軸。 兩個樞軸項目應包含LongListSelector(相同的ItemTemplate,不同的ItemSource,但在此示例中為相同的ItemSource)。
<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);
}
順便說一句,復選框的前景和邊框顏色為藍色,背景為白色。
正如您在屏幕截圖中所見,我得到了正確數量的元素,其中顯示了正確數量的復選框。 問題是沒有filterName(復選框的內容)。
如果我排除CheckBox內容的綁定:
<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>
我得到以下結果:
我在做什么錯,因此我的綁定不適用於LLS dataTemplate中的CheckBox內容?
您必須將CheckableFilter
類的字段更改為屬性,因為綁定僅適用於屬性。
public class CheckableFilter
{
public string filterName { get; set; }
public bool isChecked { get; set; }
}
用大寫字母命名屬性也是一種好習慣,但這不是必需的。 但是,如果要執行此操作,請記住在XAML中更新這些名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.