[英]c# XAML thickness resource not working
我在下面的代碼中遇到了一些問題,編譯器沒有顯示任何錯誤,並且程序正常運行,但是顏色改變了厚度卻沒有。
怎么了?
我猜想與c#代碼背后的內容有關,因為如果我在應用程序運行時手動更改厚度資源的值(vs2017的新版本允許我執行此操作),一切正常。
a
...
<Page.Resources>
<SolidColorBrush x:Key= "myColor" Color="Red"/>
<Thickness x:Key="myThickness">1,1,1,1</Thickness>
<Page.Resources>
...
<Broder BorderBrush="{StaticResource myColor}" BorderThickness="{StaticResource myThickness}">something</Border>
...
C#
Thickness myThicknessVar= (Thickness)this.Resources["myThickness"];
myThicknessVar= new Thickness(5, 5, 5, 5);
SolidColorBrush myColorVar= (SolidColorBrush)this.Resources["myColor"];
myColorVar.Color = Colors.Green;
起作用的原因:
SolidColorBrush myColorVar = (SolidColorBrush)this.Resources["myColor"];
myColorVar.Color = Colors.Green;
是您正在修改從資源字典myColorVar中檢索到的現有對象。 變量myColorVar是對此this.Resources [“ myColor”]的引用。
執行此操作時:
Thickness myThicknessVar = (Thickness)this.Resources["myThickness"];
myThicknessVar = new Thickness(5, 5, 5, 5);
您正在為變量“ myThicknessVar”分配新值,而不更改資源字典中的實際值。
要獲得所需的行為,您需要做兩件事:
this.Resources["myThickness"] = new Thickness(5, 5, 5, 5);
<Border BorderBrush="{StaticResource myColor}" BorderThickness="{DynamicResource myThickness}">
<!-- something -->
</Border>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.