Windows WPFアプリケーションにAddonを実行しています。したがって、私はプログラミングでListViewにアクセスできますが、WPFソースは編集できません。ListViewのセレクタをプログラムで変更する
データに応じてListViewItem
の特殊な書式を追加するには、自分自身のStyleSelector
クラスを作成し、そのインスタンスをListView ItemContainerStyleSelector
プロパティに割り当てました。ここ
ソースである:
public class MySelector extends System.Windows.Controls.StyleSelector {
private var oldSelector : System.Windows.Controls.StyleSelector;
public function MySelector(oldSelector : StyleSelector, debug : Object) {
this.oldSelector = oldSelector;
}
public function SelectStyle(item : Object, container : DependencyObject) : Style {
if (this.oldSelector != null) {
var oldStyle : System.Windows.Style = this.oldSelector.SelectStyle(item, container);
if (item[3] == "3") {
var newStyle : System.Windows.Style = new System.Windows.Style(oldStyle.TargetType, oldStyle);
newStyle.Setters.Add(new Setter(Control.BackgroundProperty, System.Windows.Media.Brushes.Red));
return newStyle;
} else {
return oldStyle;
}
}
return null;
}
}
これは、古いセレクタを受け取り、列インデックス3は"3"
に等しい値が含まれている場合に赤色の背景を追加します。
これはうまくいきますが、ListViewの行が表示されたり選択されたりしても、元のスタイルが適用され、線が選択されていない、または表示されなくなるまで赤い背景が失われます。
赤い背景を選択した場合でも、その線に赤い背景を適用するにはどうすればよいですか?
XAMLを編集することはできませんが、プログラムではほとんどのプロパティにアクセスできます。これは、JScript.NETで書かれたアドオンコードです。
私は今、プログラミングをnewStyle
にトリガを追加しようとしましたなかった:
var t1 : Trigger = new Trigger();
t1.Property = ListBoxItem.IsSelectedProperty;
t1.Value = true;
t1.Setters.Add(new Setter(Control.BackgroundProperty, System.Windows.Media.Brushes.Black));
newStyle.Triggers.Add(t1);
var t2 : Trigger = new Trigger();
t2.Property = UIElement.IsMouseOverProperty;
t2.Value = true;
t2.Setters.Add(new Setter(Control.BackgroundProperty, System.Windows.Media.Brushes.Violet));
newStyle.Triggers.Add(t2);
var t3 : Trigger = new Trigger();
t3.Property = UIElement.IsFocusedProperty;
t3.Value = true;
t3.Setters.Add(new Setter(Control.BackgroundProperty, System.Windows.Media.Brushes.Yellow));
newStyle.Triggers.Add(t3);
ませ効果を。
、あなたの新しいスタイルでのトリガーのコレクションを見て、マウスオーバーを削除して、トリガーを置くことはできますか? 'newStyle.Triggers' –
残念ながら、oldStyleとnewStyleにはいずれもトリガーがありません。彼らはテーマから来ることができますか? @BrentStewart – ZoolWay
これらのマウスのホバーと選択効果は、アイテムテンプレート(DataTemplate)内で定義できます。最初に、トリガーがどこにあるかを調べて調べる必要があります。たとえば、ILSpyを使用して、バイナリのxamlコードを逆コンパイルすることができます – Woodman