【发布时间】:2015-03-02 11:48:07
【问题描述】:
我正在开发 wp8 应用程序。 其中一个屏幕应该有枢轴。两个数据透视项目应包含 LongListSelectors(相同的 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);
}
顺便说一句,CheckBox 的前景色和边框颜色是蓝色,背景是白色。
我得到了正确数量的元素,正如您在屏幕截图中看到的那样,其中显示了正确数量的复选框。问题是没有filterName(CheckBox的内容)。
如果我排除 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 内容?
【问题讨论】:
标签: c# xaml windows-phone-8 checkbox longlistselector