0

我有一個DrawingBrush作爲這樣的資源:如何創建附加屬性以更改資源的屬性?

<DrawingBrush x:Key="Calendar" Stretch="Uniform"> 
    <DrawingBrush.Drawing> 
     <DrawingGroup> 
      <DrawingGroup.Children> 
       <GeometryDrawing Geometry="F1 M 28.0917,2.13333C 42.4005,2.13333 54,13.7329 54,28.0417C 54,42.3504 42.4004,53.95 28.0917,53.95C 13.7829,53.95 2.18334,42.3504 2.18334,28.0417C 2.18334,13.7329 13.7829,2.13333 28.0917,2.13333 Z "> 
        <GeometryDrawing.Pen> 
         <Pen Thickness="4" LineJoin="Round" Brush="#FF000000"/> 
        </GeometryDrawing.Pen> 
       </GeometryDrawing> 
       <GeometryDrawing Geometry="F1 M 16.9667,16.7083L 39.7167,16.7083L 39.7167,41.625L 16.9667,41.625L 16.9667,16.7083 Z "> 
        <GeometryDrawing.Pen> 
         <Pen Thickness="2.66667" StartLineCap="Square" EndLineCap="Square" MiterLimit="2.75" Brush="#FF000000"/> 
        </GeometryDrawing.Pen> 
       </GeometryDrawing> 
       <GeometryDrawing Brush="#FF000000" Geometry="F1 M 15.6333,15.9583L 40.7167,15.9583L 40.7167,25.2917L 15.6333,25.2917L 15.6333,15.9583 Z "/> 
       <GeometryDrawing Brush="#FFFFFFFF" Geometry="F1 M 18.2167,11.9583L 22.9667,11.9583L 22.9667,20.875L 18.2167,20.875L 18.2167,11.9583 Z "> 
        <GeometryDrawing.Pen> 
         <Pen Thickness="1.33333" StartLineCap="Square" EndLineCap="Square" MiterLimit="2.75" Brush="#FF000000"/> 
        </GeometryDrawing.Pen> 
       </GeometryDrawing> 
       <GeometryDrawing Brush="#FFFFFFFF" Geometry="F1 M 33.7167,11.925L 38.4667,11.925L 38.4667,20.8417L 33.7167,20.8417L 33.7167,11.925 Z "> 
        <GeometryDrawing.Pen> 
         <Pen Thickness="1.33333" StartLineCap="Square" EndLineCap="Square" MiterLimit="2.75" Brush="#FF000000"/> 
        </GeometryDrawing.Pen> 
       </GeometryDrawing> 
       <GeometryDrawing Brush="#FF000000" Geometry="F1 M 28.0154,36.2658L 28.0154,37.4894L 21.6254,37.4894C 21.6169,37.1934 21.6615,36.908 21.7592,36.6333C 21.915,36.1815 22.165,35.7425 22.5091,35.3162C 22.8533,34.8899 23.3617,34.4091 24.0344,33.8738C 25.0782,32.983 25.776,32.295 26.1279,31.81C 26.4799,31.3249 26.6558,30.8551 26.6558,30.4005C 26.6558,29.9473 26.4894,29.5653 26.1566,29.2544C 25.8238,28.9435 25.3904,28.7881 24.8565,28.7881C 24.2915,28.7881 23.8393,28.9442 23.5001,29.2565C 23.161,29.5688 22.9892,30.0018 22.985,30.5556L 21.7614,30.4196C 21.8449,29.5345 22.1576,28.86 22.6993,28.3962C 23.241,27.9323 23.9686,27.7004 24.882,27.7004C 25.8054,27.7004 26.5358,27.9596 27.0733,28.4779C 27.6107,28.9963 27.8795,29.6385 27.8795,30.4047C 27.8795,30.7942 27.8065,31.1769 27.6607,31.5529C 27.5148,31.9289 27.2726,32.3251 26.9341,32.7415C 26.5957,33.1579 26.0115,33.7215 25.1816,34.4325C 24.4692,35.0216 24.0008,35.4214 23.7763,35.6317C 23.5518,35.842 23.3667,36.0533 23.2208,36.2658L 28.0154,36.2658 Z "/> 
       <GeometryDrawing Brush="#FF000000" Geometry="F1 M 33.3178,37.4894L 33.3178,35.1781L 28.9671,35.1781L 28.9671,33.9545L 33.5897,27.8364L 34.5414,27.8364L 34.5414,33.9545L 35.765,33.9545L 35.765,35.1781L 34.5414,35.1781L 34.5414,37.4894L 33.3178,37.4894 Z M 33.3178,33.9545L 33.3178,30.1774L 30.4648,33.9545L 33.3178,33.9545 Z "/> 
      </DrawingGroup.Children> 
     </DrawingGroup> 
    </DrawingBrush.Drawing> 
</DrawingBrush> 

而且我可以這樣使用它:

<Rectangle Fill="{DynamicResource Calender}" /> 

現在,我的問題是:我怎麼可以創建一個附加屬性來改變我資源上的所有筆刷?例如我能夠創造這樣的:

<Rectangle Fill="{DynamicResource Calendar}" attached:IconHelper.Foreground="Blue" /> 

Rectangle,在我的資源,我可以得到:

<DrawingBrush x:Key="Calendar" Stretch="Uniform"> 
    <DrawingBrush.Drawing> 
     <DrawingGroup> 
      <DrawingGroup.Children> 
       <GeometryDrawing Geometry="blah blah"> 
        <GeometryDrawing.Pen> 
         <Pen Brush={attached:ReadItFromAboveRectangle}/> 
        </GeometryDrawing.Pen> 
       </GeometryDrawing> 
       <GeometryDrawing Geometry="blah blah"> 
        <GeometryDrawing.Pen> 
         <Pen Brush={attached:ReadItFromAboveRectangle}/> 
        </GeometryDrawing.Pen> 
    <!-- etc... --> 

有沒有辦法在Calendar資源上讀取Rectangle附加屬性?或者有沒有其他方法可以做到這一點?提前致謝。

回答