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

时间:2011-11-16 14:36:08

标签: c# .net wpf xaml

我在XAML中有一些frameworkElements,我定义了一些属性,比如background和cursor。

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

感谢。

2 个答案:

答案 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后面定义IsLoadingIsValid属性,并在代码隐藏的适当时间将它们设置为true / false。