gpt4 book ai didi

wpf - 如何以编程方式在 WPF 中的现有 ItemContainerStyle 中添加新的 setter?

转载 作者:行者123 更新时间:2023-12-02 06:22:19 31 4
gpt4 key购买 nike

我有如下 ListView 的项目容器样式:

<ListView.ItemContainerStyle>
<Style>
<Setter Property="Padding" Value="0"></Setter>
<Setter Property="Margin" Value="0,0,0,-1"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=EventType}" Value="2">
<Setter Property="Background" Value="Green"/>
<Setter Property="Foreground" Value="White"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>

现在我需要根据项目数据以编程方式为上下文菜单添加新的 setter 。我该怎么做?

请指导我......

谢谢

最佳答案

我必须使用 Style 和 DataTrigger 动态显示图像并显示/隐藏取决于复选框的状态。

<Image Source="/WpfApplication;component/Imgs/img1_1.png">
<Image.Style>
<Style>
<Setter Property="Image.Visibility" Value="Collapsed"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=isDisplayingImgSet1, Path=IsChecked}" Value="True">
<Setter Property="Image.Visibility" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>

规范修改后,我必须动态创建复选框,然后设置样式。一开始,我有同样的错误信息。

Image img = new Image();
//..
img.Style.Setters.Add(setter);
img.Style.Triggers.Add(trigger);
//..After a 'SetterBaseCollection' is in use (sealed), it cannot be modified.

解决方案是创建一个样式对象并将其影响到Image.Style

//Visibility
DataTrigger trigger = new DataTrigger();
trigger.Binding = new Binding
{
ElementName = "isDisplayingImgSet"+NumSet,
Path = new PropertyPath(CheckBox.IsCheckedProperty)
};
trigger.Value = "True";
trigger.Setters.Add(new Setter(ContentControl.VisibilityProperty, Visibility.Visible));

Setter setter = new Setter(ContentControl.VisibilityProperty, Visibility.Collapsed);
Style style = new Style(typeof(Image));
style.Setters.Add(setter);
style.Triggers.Add(trigger);
img.Style = style;

希望对你有帮助

PS:这是我的第一篇文章

关于wpf - 如何以编程方式在 WPF 中的现有 ItemContainerStyle 中添加新的 setter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7120781/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com