是否可以重新加载UserControl的XAML属性?

本文关键字:UserControl XAML 属性 加载 新加载 是否 | 更新日期: 2023-09-27 18:14:44

我在XAML中有一些frameworkelement,我定义了一些属性,如背景和光标。

在后面的代码中,我更改了这些属性,当事件触发时,我希望重新加载这些在XAML中定义的初始属性。这是可能的还是我需要在代码后面手动重新定义?

谢谢。

是否可以重新加载UserControl的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>

当然,您必须在UserControl后面定义IsLoadingIsValid属性,并在代码后面的适当时间将它们设置为true/false。