0

私はそのように定義されたxamlスタイルを持っています:

<Style TargetType="{x:Type ListViewItem}">[...]</Style>

<Style TargetType="{x:Type ListViewItem}" x:Key="track_selected">[...]</Style>

これが、listviewitemに「track_selected」スタイルをプログラムで適用するためのコードです。

((ListViewItem)lv_tracklist.ItemContainerGenerator.ContainerFromIndex(currentTrackIndex)).Style = FindResource("track_selected") as Style;                

私の質問は、mylistview内のすべてのlistviewitemをデフォルトのスタイルにリセットする方法です。これは上記のリストの最初のものです。

4

1 に答える 1

2

例外はありますが、コード ビハインドで Views オブジェクトを操作することはお勧めしません。これはxamlファイルで行う必要があります。

この例は、WPF を使用する場合の不適切なコーディング方法です。

切り替えStylesて使うのが一番StyleSelectorsです。あなたの場合、ListView の ItemContainerStyleSelector プロパティを設定します。

<Style x:Key="ItemStyle" TargetType="ListViewItem">
   <!-- Setters and Triggers -->
</Style>

<Style x:Key="TrackSelectedStyle" TargetType="ListViewItem">
   <!-- Setters and Triggers -->
</Style>

<example:TrackSelectionStyleSelectorx:Key="myContainerStyleSelector"
ItemsStyle ="{StaticResource ItemStyle}"
TrackSelectedStyle ="{StaticResource TrackSelectedStyle}"/>

<ListView ... ItemContainerStyleSelector="{StaticResource myContainerStyleSelector}"/>

StyleSelectorクラス (別の .cs ファイルに入れます) :

public class TrackSelectionStyleSelector: StyleSelector
{
   public Style ItemsStyle {get; set;}
   public Style TrackSelectedStyle {get; set;}

   public override Style SelectStyle( object item, DependencyObject container )
   {
     if ( /* isTrackSelected logic */ )
        return TrackSelectedStyle;

     return ItemsStyle;
   }

}

item パラメーターを ListViewItems コンテンツ タイプの型にキャストすることを忘れないでください。

于 2012-09-13T12:02:49.950 に答える