c# - 无法访问后面代码中的 WPF 故事板名称
问题描述
我想让 TextBlock 的文本闪烁。但是,无法访问 Storyboard。请查看以下代码:
XAML
<Page.Resources>
<Storyboard x:Name="BlinkLabelStoryBoard" x:Key="BlinkLabel" Duration="0:0:2" RepeatBehavior="Forever">
<ColorAnimationUsingKeyFrames
Storyboard.TargetName="DeviceState"
Storyboard.TargetProperty="Foreground.(SolidColorBrush.Color)">
<DiscreteColorKeyFrame KeyTime="0:0:0" Value="White"/>
<DiscreteColorKeyFrame KeyTime="0:0:1" Value="OrangeRed"/>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</Page.Resources>
<TextBlock x:Name="DeviceState" Text="{Binding RunMode}" FontWeight="Bold" FontSize="16" HorizontalAlignment="Center" Loaded="Start_Animation">
代码背后
private void Start_Animation(object sender, RoutedEventArgs e)
{
Storyboard board = (FindResource("BlinkLabelStoryBoard") as Storyboard);
board.Begin();
}
但是,发生错误BlinkLabelStoryBoard resource not found
。并且,另一个错误发生DeviceState
资源未找到。
解决方案
FindResource 需要一个键而不是名称。
XAML
<Page.Resources>
<Storyboard x:Key="BlinkLabel" Duration="0:0:2" RepeatBehavior="Forever">
<ColorAnimationUsingKeyFrames
C#
private void Start_Animation(object sender, RoutedEventArgs e)
{
Storyboard board = (FindResource("BlinkLabel") as Storyboard);
Name 变成 C# 代码中的标识符。Key 是字典中的索引,在这种情况下是 ResourceDictionary。
推荐阅读
- mysql - TypeORM:使用同一实体为每个租户创建多个数据库模式
- c# - 如何从父组件验证子组件 Blazor 中的某些动态字段?
- python - 字符串列的条件组合
- r - 如何在 R Shiny 中仅使用一个下载按钮下载多个图?
- python - 基于阈值对元素求和
- node.js - 如何在 NodeJs 中使用 Canvas 加载 GIF 图像?
- pytorch - RuntimeError:堆栈期望每个张量大小相等,但在条目 0 处得到 [3, 336, 500] 在条目 1 处得到 [3, 500, 336]
- python - 如何找到球接触球场的坐标
- c# - 使用 JSON 反序列化
- reactjs - 删除 App.js 后创建 App.jsx 时出错