0

色の行を交互に (最初の行の白色と 2 番目のグレー色)、行を上下に移動する WPF リストボックスに取り組んでいます。両方とも達成されていますが、2 行目を最初の位置に移動すると、背景がグレー色に変わります。 2行目から位置を上に移動した後に最初の色が灰色の場合、下に移動ボタンをクリックすると、背景色が再び白色に変わります。この動作は、2を超える行番号では観察できません。コンテンツが上下に移動しても、背景色は固定されたままです。この奇妙な動作の理由を見つけることができません。助けていただければ幸いです。

XAML のコード スニペット

<Style x:Key="AlternatingListViewItemStyle" TargetType="{x:Type ListBoxItem}">
            <Style.Triggers>
                <Trigger Property="ItemsControl.AlternationIndex" Value="0">
                    <Setter Property="Background" Value="White"/>
                </Trigger>
                <Trigger Property="ItemsControl.AlternationIndex" Value="1">
                    <Setter Property="Background" Value="Gray"/>
                </Trigger>
            </Style.Triggers>
 </Style>

<ListBox ItemsSource="{Binding CollectioNames}" x:Name="listBox"  ItemContainerStyle="{StaticResource AlternatingListViewItemStyle}"  AlternationCount="2"  SelectionMode="Multiple" >

                <ListBox.ItemTemplate >
                    <DataTemplate >
                        <Grid Margin="0" HorizontalAlignment="Stretch" VerticalAlignment="Top">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition  Width="200*" MinWidth="200" ></ColumnDefinition>
                                <ColumnDefinition  Width="Auto"></ColumnDefinition>
                                <ColumnDefinition  Width="Auto"  ></ColumnDefinition>
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition></RowDefinition>
                            </Grid.RowDefinitions>
                            <CheckBox x:Name="checkBoxList" Grid.Row="0"  Grid.Column="0" IsChecked="{Binding IsChecked}" Content="{Binding Path=Item.Name}"  />

                            <Button x:Name="btnListUp"  Grid.Row="0" Grid.Column="1" Click="moveUp_Click"  Content="Ç"  FontFamily="Wingdings 3"   VerticalAlignment="Stretch" />
                            <Button x:Name="btnListDown"  Grid.Row="0" Grid.Column="2" Click="moveDown_Click" FontFamily="Wingdings 3" Content="È"  VerticalAlignment="Stretch"   />
                        </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

コードビハインドコード

public ObservableCollection<CheckedListItem<MyClass>> CollectioNames { get; set; }

 private void moveUp_Click(object sender, RoutedEventArgs e)
        {
            try
            {

                Button button = sender as Button;
                var dataContext = button.DataContext;

                CheckedListItem<MyClass> selectedfile = button.DataContext as CheckedListItem<MyClass>;

                int index = CollectioNames.IndexOf(selectedfile);
                if (index > 0)
                {
                    CollectioNames.Move(index, index - 1);
                }
            }
            catch (Exception ex)
            {

            }
        }

        private void moveDown_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                Button button = sender as Button;
                var dataContext = button.DataContext;

                CheckedListItem<MyClass> selectedfile = button.DataContext as CheckedListItem<MyClass>;

                int index = CollectioNames.IndexOf(selectedfile);
                if (index < CollectioNames.Count - 1)
                {
                    CollectioNames.Move(index, index + 1);

                }
            }
            catch (Exception ex)
            {
            }
        }
4

0 に答える 0