Zoo*_*Way 5 .net c# wpf listview jscript.net
我正在为Windows WPF应用程序添加一个Addon.因此,我可以通过编程访问ListView,但不能编辑WPF源.
要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;
}
}
Run Code Online (Sandbox Code Playgroud)
如果列索引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);
Run Code Online (Sandbox Code Playgroud)
没有效果.
小智 3
我会使用资源库并在那里操纵触发器等。
例子:
<Style x:Key="MenuButtonStyle" TargetType="Button">
<Setter Property="Background" Value="#FF494646"/>
<Setter Property="Foreground" Value="#FFE5E5E5"/>
<Setter Property="TextOptions.TextFormattingMode" Value="Display"></Setter>
<Setter Property="Cursor" Value="Hand"></Setter>
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect Opacity="0.7"/>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Black"/>
</Trigger>
<Trigger Property="IsFocused" Value="True">
<Setter Property="Background" Value="ForestGreen"></Setter>
<Setter Property="Foreground" Value="Black"/>
</Trigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2225 次 |
| 最近记录: |