方法)中删除IList )。然后使用该Selector Insert 方法插入删除的项目。
接下来检查是否现在是第一个项目,禁用Button 它是否为,并且Selector SelectedIndex 设置为仍然指向同一个项目。
该移码几乎是相同的,则删除要简单得多,因为它没有保存已删除的项目,然后将其放回IList 。
最后,有适当的代码启用或禁用Button 取决于是否存在SelectedItem ,SelectedItem 是第一个(用于上移)或最后一个项目IList (用于下移)。这是SelectedItem 在Selector 触发事件时调用的事件处理程序:
隐藏 复制代码
private static void SetMoveItemUpButtonIsEnabled(object sender, RoutedEventArgs e) { <code> Debug.Assert(sender is Selector); var Selector = (Selector)sender; var IList = CheckForIList(Selector); var itemNumber = Selector.SelectedIndex; var Button = (ButtonBase) Selector.GetValue(MoveUpButton); Button.IsEnabled = (itemNumber >= 1 && itemNumber < IList.Count); }</code>
对于这种需要IList 绑定到ItemsSource 的SelectedIndex ,并需要得到Button 保存为一个附加属性在此功能Selector 。对于Remove函数,只需要知道if SelectedIndex 是否等于-1,这样简单得多。
使用行为
要使用此行为,只需要一个从Selector 控件派生的列表控件,Name 为此控件关联一个值,并Button 为每个应该实现的函数定义一个网站源码。在每一个Button XAML只包括ListHelperBahavior 与DependencyProperty 它有关联Binding 的Selector :
隐藏 收缩 复制代码
<Grid Margin="10"> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <ListBox Name="TheList" ItemsSource="{Binding List}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" > <ListBox.ItemTemplate> <DataTemplate> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="30"/> <ColumnDefinition Width="200"/> </Grid.ColumnDefinitions> <TextBlock Text="{Binding ItemNumber}"/> <TextBlock Grid.Column="1" Text="{Binding TimeCreated}"/> </Grid> </DataTemplate> </ListBox.ItemTemplate> </ListBox> <StackPanel Grid.Row="2" Margin="-5 5" Orientation="Horizontal" |