簡體   English   中英

C#XAML厚度資源不起作用

[英]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”分配新值,而不更改資源字典中的實際值。

要獲得所需的行為,您需要做兩件事:

  1. 更改存儲在資源字典中的對象:
this.Resources["myThickness"] = new Thickness(5, 5, 5, 5);
  1. 在XAML中使用DynamicResource而不是StaticResource:
<Border BorderBrush="{StaticResource myColor}" BorderThickness="{DynamicResource myThickness}">
    <!-- something -->
</Border>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM