【发布时间】:2011-03-29 07:30:39
【问题描述】:
我有两个列表选择器。当第一个列表选择器选择更改时,它应该过滤第二个列表选择器的数据。 第二个 ListPicker xaml 是这样的
<TextBlock HorizontalAlignment="Left" Style="{StaticResource PhoneTextNormalStyle}" TextWrapping="Wrap" Text="text" VerticalAlignment="Bottom"/>
<toolkit:ListPicker VerticalAlignment="Bottom" Name="CategoryList" ItemsSource="{Binding TransactionCategories, Mode=TwoWay}" SelectedItem="{Binding SelectedTransactionCategory, Mode=TwoWay}">
<toolkit:ListPicker.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Rectangle Fill="Red" Width="24" Height="24"/>
<TextBlock Text="{Binding CategoryName,Mode=TwoWay}" Margin="12 0 0 0"/>
</StackPanel>
</DataTemplate>
</toolkit:ListPicker.ItemTemplate>
<toolkit:ListPicker.FullModeItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="16 21 0 20">
<Rectangle Width="43" Height="43"/>
<TextBlock Text="{Binding CategoryName, Mode=TwoWay}" Margin="16 0 0 0" FontSize="43" FontFamily="{StaticResource PhoneFontFamilyLight}" TextWrapping="Wrap"/>
</StackPanel>
</DataTemplate>
</toolkit:ListPicker.FullModeItemTemplate>
</toolkit:ListPicker>
第一个选择器触发事件 GroupCategoryList_SelectionChanged
private void GroupCategoryList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var category = (TransactionGroupCategory) GroupCategoryList.SelectedItem;
((TransactionEditViewModel)DataContext).FilterCategoryByGroup(category.GroupCategoryId);
}
这是 ViewModel 中的一个方法
public void FilterCategoryByGroup(int groupCategoryId)
{
TransactionCategories = ToObservableCollection(DatabaseBl.GetData<TransactionCategory>().Where(x => x.GroupCategoryId == groupCategoryId).OrderByDescending(tc => tc.TransactionCount));
if (TransactionCategories.Count > 0)
SelectedTransactionCategory = TransactionCategories[0];
}
第二个列表选择器永远不会在 UI 中刷新,即使新数据是通过 filter 方法获取的。这有什么问题。可能是绑定问题?
【问题讨论】:
标签: silverlight windows-phone-7 silverlight-toolkit