我在XAML中有一些frameworkElements,我定義了一些屬性,如背景和光標。是否有可能重新加載UserControl的XAML屬性?
在後面的代碼中,我更改了這些屬性,並且當事件觸發時,我想重新加載這些在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
屬性,他們在你設置爲真/假在適當的時間代碼隱藏。