Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以重新加载UserControl的XAML属性?_C#_.net_Wpf_Xaml - Fatal编程技术网

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

C# 是否可以重新加载UserControl的XAML属性?,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我在XAML中有一些框架元素,我定义了一些属性,比如背景和光标 在代码隐藏中,我更改这些属性,当事件触发时,我希望重新加载XAML中定义的这些初始属性。这是可能的还是我需要在代码隐藏中手动重拨 谢谢。XAML中定义的控件实际上是在定义实例。拥有实例后,该对象与您处理的所有其他对象一样。在代码隐藏中访问XAML中定义的实例类似于在代码隐藏中创建一个新对象,然后在运行时调整其属性 当您希望更改属性值时;您不需要恢复您的属性更改,只需将它们更改为您想要的内容。我建议查看DataTriggers,根据某

我在XAML中有一些框架元素,我定义了一些属性,比如背景和光标

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


谢谢。

XAML中定义的控件实际上是在定义实例。拥有实例后,该对象与您处理的所有其他对象一样。在代码隐藏中访问XAML中定义的实例类似于在代码隐藏中创建一个新对象,然后在运行时调整其属性


当您希望更改属性值时;您不需要恢复您的属性更改,只需将它们更改为您想要的内容。

我建议查看
DataTriggers
,根据某些值进行临时更改。这将在特定条件为true时更改属性的值,并在条件为false时将其恢复为原始值

例如,下面的样式将在加载时将光标更改为等待光标,如果无效,则将背景更改为红色

<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