我在XAML中有一些frameworkElements,我定义了一些属性,比如background和cursor。
在后面的代码中,我更改了这些属性,当事件触发时,我想重新加载XAML中定义的这些初始属性。这是可能的还是我需要在后面的代码中手动重新编写?
感谢。
答案 0 :(得分:0)
XAML中定义的控件实质上是定义实例。拥有实例之后,该对象就像您处理的每个其他对象一样。在后面的代码中访问XAML中定义的实例类似于在后面的代码中创建一个新对象,然后在运行时调整其属性。
当您想要更改属性值时;您不会还原您的属性更改,只需将其更改为您想要的内容即可。
答案 1 :(得分:0)
我建议调查DataTriggers
根据某些值进行临时更改。这将在特定条件为真时更改属性的值,并在条件为假时将其还原为其原始值。
例如,这是一种在加载时将光标更改为等待光标的样式,如果无效则将背景更改为红色。
<Style TargetType="{x:Type local:MyUserControl}">
<Setter Property="Cursor" Value="Arrow" />
<Setter Property="Background" Value="White" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsLoading}" Value="True">
<Setter Property="Cursor" Value="Wait" />
</DataTrigger>
<DataTrigger Binding="{Binding IsValid}" Value="True">
<Setter Property="Background" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
当然,您必须在UserControl后面定义IsLoading
和IsValid
属性,并在代码隐藏的适当时间将它们设置为true / false。