簡體   English   中英

LongListSelector未綁定到數據源

[英]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(復選框的內容)。

屏幕截圖1

如果我排除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>

我得到以下結果: 屏幕截圖2

我在做什么錯,因此我的綁定不適用於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM