是否有可能重新加载UserControl的XAML属性?
问题描述:
我在XAML中有一些frameworkElements,我定义了一些属性,如背景和光标。是否有可能重新加载UserControl的XAML属性?
在后面的代码中,我更改了这些属性,并且当事件触发时,我想重新加载这些在XAML中定义的初始属性。这是可能的,或者我需要在后面的代码中手动重新编写吗?
谢谢。
答
在XAML中定义的控件本质上定义了一个实例。一旦你有了实例,对象就像你处理的其他对象一样。在后面的代码中访问在XAML中定义的实例类似于在代码后面创建一个新对象,然后在运行时调整其属性。
当你想要改变属性值;你不会恢复你的财产变化,你只需要改变他们的想法。
答
我建议调查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>
当然,你必须确定你的用户控件背后的IsLoading
和IsValid
属性,他们在你设置为真/假在适当的时间代码隐藏。