0

.NET フレームワークの 3.5 で VS2008 を使用して、WPF リストビュー コントロールの最初の行をプログラムで強調表示しようとしています。このための C# コードは次のとおりです。

ListViewItem Val = (ListViewItem)ListView1.Items[0];
Val.IsSelected = true;

このコードは、ListView1 にデータが取り込まれた後の最初の行で例外をスローします。例外のメッセージには次のように記載されています。

「型 'Message.LV1Data' のオブジェクトを型 'System.Windows.Controls.ListViewItem' にキャストできません。」

LV1Data は、このコントロールの列をバインドするために使用しているクラスです。そのため、ListViewItem オブジェクトではなく LV1Data オブジェクトを返そうとしているようです。リストビューの行をプログラムで強調表示するために、私が間違っていることや何をする必要があるかについて、誰か提案がありますか?

ListView コントロールの XAML コードは次のとおりです。

<ListView x:Name="ListView1" ItemContainerStyle="{StaticResource alternatingListViewItemStyle}" AlternationCount="2" SelectionChanged="ListView1_SelectionChanged"
 SelectionMode="Multiple" HorizontalAlignment="Left" ItemsSource = "{Binding ElementName=LobbyWindow, Path=ListCollection1}">
   <ListView.View>
      <GridView>
         <GridViewColumn DisplayMemberBinding="{Binding Game}">
         <GridViewColumnHeader Content="Game" FontWeight="Bold" />
         </GridViewColumn>
         <GridViewColumn DisplayMemberBinding="{Binding Stakes}">
         <GridViewColumnHeader Content="Stakes" Width="68" FontWeight="Bold" />
         </GridViewColumn>
         <GridViewColumn Width="30" DisplayMemberBinding="{Binding Seats}">
         <GridViewColumnHeader Content="Seats" FontWeight="Bold" />
         </GridViewColumn>
      </GridView>
   </ListView.View>
</ListView>

編集

<!-- Define the resource for the alternating background background used in the ListView objects.  -->
<StackPanel.Resources>
   <Style x:Key="alternatingListViewItemStyle" TargetType="{x:Type ListViewItem}">
      <Setter Property="IsSelected" Value="{Binding IsSelected}"/>
      <Style.Resources>
         <!-- Foreground for Selected ListViewItem -->
         <!-- <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/> -->
         <!-- Background for Selected ListViewItem -->
         <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Green"/>
         <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Brown"/>
      </Style.Resources>
      <Style.Triggers>
         <!-- setting up triggers for alternate background colors -->
         <Trigger Property="ItemsControl.AlternationIndex" Value="1">
            <Setter Property="Background" Value="#FFD9F2BF"></Setter>
         </Trigger>
         <Trigger Property="ItemsControl.AlternationIndex" Value="2">
            <Setter Property="Background" Value="White"></Setter>
         </Trigger>
         <Trigger Property="IsSelected" Value="True">
            <Setter Property="Background" Value="LightBlue"></Setter>
         </Trigger>
         <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="BorderBrush" Value="LightBlue" />
         </Trigger>
         <MultiTrigger>
            <MultiTrigger.Conditions>
               <Condition Property="IsSelected" Value="True"></Condition>
               <Condition Property="ItemsControl.AlternationIndex" Value="0"></Condition>
            </MultiTrigger.Conditions>
            <Setter Property="Background" Value="LightBlue"></Setter>
         </MultiTrigger>
         <MultiTrigger>
            <MultiTrigger.Conditions>
               <Condition Property="IsSelected" Value="True"></Condition>
               <Condition Property="ItemsControl.AlternationIndex" Value="1"></Condition>
            </MultiTrigger.Conditions>
            <Setter Property="Background" Value="LightGreen"></Setter>
         </MultiTrigger>
      </Style.Triggers>
      <!-- setting row height here -->
   </Style>
</StackPanel.Resources>
4

2 に答える 2