无法在“样式.触发器”节中设置WPF“源名称”属性错误

x8diyxa7  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(173)

我收到以下详细信息的错误:

无法在Style.triggers节中设置“源名称”属性

<Rectangle Margin="121,163,0,248" HorizontalAlignment="Left" Width="33" Height="34">
            <Rectangle.Style>
                <Style TargetType="Rectangle">
                    <Setter Property="Fill" Value="Blue"></Setter>
                    <Style.Triggers>
                        <EventTrigger SourceName="myButton"  RoutedEvent="Button.Click">
                            <BeginStoryboard>
                                <Storyboard>
                                    <ColorAnimation 
                                        Storyboard.TargetProperty="Fill.Color" To="Orange" 
                                        Duration="0:0:1" AutoReverse="True" RepeatBehavior="Forever"
                                        BeginTime="0:0:0">
                                    </ColorAnimation>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger>
                    </Style.Triggers>
                </Style>
            </Rectangle.Style>

我想改变矩形填充颜色与彩色动画标签时,点击按钮。

50pmv0ei

50pmv0ei1#

就像它说的,你不能在这样的风格中使用源代码名称。
你也可以使用数据触发器,比如在视图模型中设置一个bool属性,通过点击按钮的命令。
然后从绑定bool属性和比较值数据触发器开始故事板。
你可以很容易地谷歌数据触发器和故事板,但这里有一个这样的问题包括一个例子。
WPF Data Triggers and Story Boards
顺便说一句。
路由事件很少是非常有用的输入法。绑定icommand是更实用的方式。通常。
编辑:
这是一个使用togglebutton的简单示例。由于这种方法使用绑定,它可以通过名称引用控件。绑定在运行时解决。

<Grid>
    <Rectangle>
        <Rectangle.Style>
            <Style TargetType="Rectangle">
                <Setter Property="Fill" Value="Blue"></Setter>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsChecked, ElementName=StartStop}" Value="True">
                        <DataTrigger.EnterActions>
                            <BeginStoryboard  x:Name="ColourStoryboard">
                                <Storyboard>
                                    <ColorAnimation 
                                        Storyboard.TargetProperty="Fill.Color" To="Orange" 
                                        Duration="0:0:1" AutoReverse="True" RepeatBehavior="Forever"
                                         >
                                    </ColorAnimation>
                                </Storyboard>
                            </BeginStoryboard>
                        </DataTrigger.EnterActions>
                        <DataTrigger.ExitActions>
                            <StopStoryboard  BeginStoryboardName="ColourStoryboard"/>
                        </DataTrigger.ExitActions>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Rectangle.Style>
    </Rectangle>
    <ToggleButton Content="Start Stop" 
                  HorizontalAlignment="Left"
                  VerticalAlignment="Top"
                  Name="StartStop"/>
</Grid>
</Window>

将网格粘贴到主窗口中,旋转它。当你点击切换按钮时,它会设置ischecked为真,这样矩形动画就会变成橙色,然后又变回蓝色。当你再次点击该按钮时,ischecked变为假,动画就会停止。
你可以在一个按钮处理程序中编写代码来设置一个在datacontext中的绑定属性,并将datatrigger绑定到该绑定属性,这就是链接中的标记对IsBusy所做的。

相关问题