- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建 DataTemplate在代码隐藏中。我对DataTrigger有疑问就在其中。
这是用 xaml 编写的 DataTemplate:
<DataTemplate x:Key="XamlTemplate" >
<TextBox Text="{Binding Name}" Name="element" Width="100"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Flag}" Value="true">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetName="element" Storyboard.TargetProperty="Width"
To="200" Duration="0:0:2" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
这是我用 c# 编写的内容
var template = new DataTemplate();
//create visual tree
var textFactory = new FrameworkElementFactory(typeof(TextBox));
textFactory.SetBinding(TextBox.TextProperty, new Binding("Name"));
textFactory.SetValue(TextBox.NameProperty, "element");
textFactory.SetValue(TextBox.WidthProperty, 100D);
template.VisualTree = textFactory;
//create trigger
var animation = new DoubleAnimation();
animation.To = 200;
animation.Duration = TimeSpan.FromSeconds(2);
Storyboard.SetTargetProperty(animation, new PropertyPath("Width"));
Storyboard.SetTargetName(animation, "element");
var storyboard = new Storyboard();
storyboard.Children.Add(animation);
var action = new BeginStoryboard();
action.Storyboard = storyboard;
var trigger = new DataTrigger();
trigger.Binding = new Binding("Flag");
trigger.Value = true;
trigger.EnterActions.Add(action);
template.Triggers.Add(trigger);
A将此数据模板设置为ContentTemplate一个按钮的。按钮是将数据绑定(bind)到简单的类,这不是问题。
问题是,当我使用在代码中创建的数据模板时,当 Flag
属性更改时,我收到以下异常在“System.Windows.DataTemplate”的名称范围中找不到“element”名称
。而用 xaml 编写的模板可以完美运行。
那么我在哪里将 xaml 翻译成 c# 失败了?
最佳答案
元素的名称
有点特殊(例如,请参阅备注 here)。
您想挂断电话
textFactory.SetValue(TextBox.NameProperty, "element");
并设置FrameworkElementFactory.Name
:
textFactory.Name = "element";
这是因为,如果该属性是在创建后设置的(这就是您所做的),则它将不再以相同的方式注册。
One notable case where setting Name from code is important is when registering names for elements that storyboards will run against, so that they can be referenced at run time. Before you can register a name, might also need to instantiate and assign a NameScope instance. See the Example section, or Storyboards Overview.
关于wpf - 在代码中创建DataTemplate和DataTrigger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6295727/
我想使用带有 DataTrigger 的样式来定义 ResourceDictionary 中控件的一般外观。 是否可以在 View 中指定DataTrigger绑定(bind)路径?如果没有,是否有一
我需要根据用户与搜索功能的交互动态添加 DataTrigger,因此无法在 XAML 中完成。但是,从下面的 XAML 代码中可以看出我正在尝试做的事情的基本目标。它需要根据 ToggleButton
我有一个名为 OperativeCount 的值。当此数字大于 10 时,我希望 DataGridColumn 的颜色发生变化。类似于此; 10"
我在我的 XAML 中定义了一个 DataTrigger,我想在多个地方使用它。是否可以将其定义为资源然后共享? 这是我的触发器:
所以这是我的 XAML:
我正在尝试将我的一些 WPF 技能转换为 Silverlight,并且在我一直在开发的测试迷你应用程序中遇到了一个稍微奇怪的问题。在 WPF 中,我习惯于在样式中使用 DataTriggers 来根据
是否可以使用 DataTrigger 在 WPF 中设置 RotateTransform 的角度?如果是这样,如何? 最佳答案 当然,这样的事情应该有效
我知道我可以创建一个 setter 来检查值是否为 NULL 并执行某些操作。示例:
所以我刚刚加入了一个 Windows Phone 团队,他们倾向于按照以下方式做一些事情: 我查看了它并心想:代码重复,将 2 个元素加载到 UI,这(虽然很小)加载了不必要的内存 - 为什么在任
正如 WPF 经常发生的那样,我可能会以错误的方式处理事情,但我有以下情况: 我想根据 DataTrigger 应用样式,但您不能从样式内部更改样式:
我希望我的 TextBox 有一个 红色背景如果 ViewModel 属性 =“ 无效 ”。我必须改变什么才能有效? 这个版本告诉我背景没有合格的类型名称 .
我有几个项目控件,我需要为它们附加一个事件处理程序 PreviewMouseLeftButtonDown 事件仅在满足某个条件时发生。 我用数据触发器为我的控件设计了一种样式,我检查了它的绑定(bin
当我的绑定(bind)表字段时,我希望我的图像可见性属性设置为隐藏 Weblink = NULL **OR** Weblink = "" 使用 MultiDataTrigger,您可以按以下逻辑测试多
有没有人有一个成功的解决方法来根据基础数据对象的属性更改 Silverlight 中的样式,因为当值更改时,样式也会更改。我简要地使用了 WPF,它显然有 DataTrigger,它似乎涵盖了这一点,
【原创】 我有一个 ListBox有它的ItemsSource (这是在创建窗口时在后面的代码中完成的)数据绑定(bind)到 ObservableCollection . ListBox然后有以下D
我正在使用 MVVM,所以我需要绑定(bind)一个矩形形状的属性,该属性最终会对其进行动画处理。 我发现很少solutions并试图复制他们的方法,但故事范围没有发挥作用 我包括我的源代码
我有一个动画可以将边框(使用渲染转换变换)移动到它的宽度。此动画需要应用于多个边框,并且这些边框的宽度会有所不同。所以我将动画关键帧的 Value 属性绑定(bind)到边框的 ActualWidth
我有一个 WPF 数据触发器,该触发器设置为在值为 true 时触发。 我希望每次该值设置为 true 时都会触发此触发器,即使它之前是 true。不幸的是,它似乎只有在值从 true 更改为 fal
我有一个数据模板。它有两种视觉状态——展开、折叠。我添加了 2 个 GoToStateAction-s。第一个在数据上下文属性变为 True 时进入 Expanded 状态,第二个在同一属性变为 Fa
我是一名优秀的程序员,十分优秀!