添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

一直以来 下面的写法都是错的

<Button Content="开始测试" Width="100" Margin="10" Height="50" Click="button_test_Click">            
    <Button.Triggers>
        <DataTrigger Binding="{Binding IsTest}" Value="True" >
            <Setter Property="Content" Value="停止测试"/>
        </DataTrigger>
    </Button.Triggers>
</Button>

报错为 “Triggers 集合成员必须是类型EventTriggers”

使用 style

<Button Content="开始测试" Width="100" Margin="10" Height="50" Click="button_test_Click">            
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsTest}" Value="True" >
                    <Setter Property="Content" Value="停止测试"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

一点效果都没有

今天终于发现,下面才是正解

<Button Width="100" Margin="10" Height="50" Click="button_test_Click">            
    <Button.Style>
        <Style TargetType="Button">
            <Setter Property="Content" Value="开始测试"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsTest}" Value="True" >
                    <Setter Property="Content" Value="停止测试"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

动作流程:

1.设置的是 Style 的 Triggers,  当 IsTest=True 时,改变的是 Style 里面的 <Setter Property="Content" Value="停止测试"/>

2. Style 中的 Setter 变化了, 对应 Button 中的属性 也被同时改变。

代码1 中, 虽然设置了Style, 但也设置了 Button.Content, 导致 Style 中的 <Setter Property="Content"/> 无效

自然,就算 IsTest=True,Style 中的 Setter 变化了, 也没用。 因为永远以 Button.Content 为最后设置值

真的不理解微软为啥 “Triggers 集合成员必须是类型EventTriggers”

Style.Triggers 都能 有DataTrigger

一直以来 下面的写法都是错的 &amp;lt;Button Content=&quot;开始测试&quot; Width=&quot;100&quot; Margin=&quot;10&quot; Height=&quot;50&quot; Click=&quot;button_test_Click&quot;&amp;gt; &amp;lt;Button.Triggers&amp;gt; &amp;lt;DataTrigger Binding=&quo
<Style x:Key="playBtn" TargetType="{x:Type control: Button WithIcon}"> <Setter Property="Cursor" Value="Hand"/> <Setter Property="Width" Value="28"/> 在样式中(Style. Trigger s集合) 在数据模板中( Data Template. Trigger s集合) 在控件模板中(ControlTemplate. Trigger s集合) 直接在元素中定义触发器(FrameworkElement. Trigger s集合) 直接在元素中定义的触发器仅支持事件触发器,若在其中定义其他触发器,则会报如下错误:“ Trigger s集合成员必须是Enter Trigger ”. 其他触发器集合的功能更强大,他们支持三种基本类型的触发器:
wpf 中,根据数据的值的不同,UI的界面随之改变(显示控件、隐藏控件以及改变控件的其它属性), 这时我们可以用 Data Trigger 数据触发器。 下面两个案例实现同样的功能,当条件(数据的值)不同时,显示不同的按钮。 创建 Core类: using System; using System.Collections.Generic; using Syste...
这一篇,总结 Trigger s。       FrameworkElement、Style、ControlTemplate和 Data Template都具有一个类型为 Trigger Collection 的 Trigger s属性, Trigger Collection继承自:   Collection&lt; Trigger Base&gt;,所以它们都有一个触发器的集合。      触发器可以在xaml中...
假设我们有两个文本框,需要输入姓名和年龄,且两项为必须输入的字段。这时候我们可以利用Validation类扩展自己的数据验证,同时将验证结果绑定到 Button 的IsEnabled属性上,当两个TextBox输入的值通过数据验证后, Button 才可用。 首先,我们创建两个数据验证类 public class NameValidationRule : ValidationRule public override ValidationResult Validate(object Trigger s 可以作为Style和ControlTemplate的一个属性来进行设置,该属性的类型为 Trigger Collection,它是 Trigger Base的一个集合,。
wpf 中 我想实现这样一个功能:combox绑定了一个list<string>,listbox的显示内容用CheckBox展示出来,listbox的选项与combox下拉框选项一样,当选择combox的一个选项后,listbox的相同内容变为不可选中,如何实现
您可以 使用 WPF Data Template和 Data Trigger 来实现此功能。首先,您需要创建一个 Data Template,其中包含一个CheckBox和一个TextBlock,用于显示列表中的字符串。然后,您可以 使用 Data Trigger 来检测ComboBox的选择,并将相应的列表项设置为不可选中。以下是一个简单的示例代码: <ComboBox x:Name="myComboBox" ItemsSource="{Binding myStringList}"> <ComboBox.ItemTemplate> < Data Template> <TextBlock Text="{Binding}" /> </ Data Template> </ComboBox.ItemTemplate> </ComboBox> <ListBox ItemsSource="{Binding myStringList}"> <ListBox.ItemTemplate> < Data Template> <StackPanel Orientation="Horizontal"> <CheckBox IsChecked="{Binding IsSelected}" /> <TextBlock Text="{Binding}" /> </StackPanel> </ Data Template> </ListBox.ItemTemplate> <ListBox.ItemContainerStyle> <Style TargetType="{x:Type ListBoxItem}"> <Style. Trigger s> < Data Trigger Binding="{Binding ElementName=myComboBox, Path=SelectedItem}" Value="{Binding}"> <Setter Property="IsEnabled" Value="False" /> </ Data Trigger > </Style. Trigger s> </Style> </ListBox.ItemContainerStyle> </ListBox> 在这个示例中,ComboBox绑定了一个名为“myStringList”的字符串列表。ListBox也绑定了同一个列表,并 使用 Data Template来显示每个字符串。当ComboBox选择一个项目时, Data Trigger 会检测到选择的项目,并将ListBox中相应的项目设置为不可选中。