2012-04-30 18 views
3

編輯: 我,我轉換爲Brush,因此它沒有考慮我的顏色像下面的十六進制值(字符串)把我的色彩成功地:一個LinearGradientBrush顏色綁定(簡單條形圖的ItemsControl)

(Color)ColorConverter.ConvertFromString(colorArray[0]) 

剩餘的唯一問題是縮放(顏色)。

我的彩條似乎是透明的(再次),但現在連接到每個欄合適的顏色。 同樣在我的程序啓動時,所有6個欄顯示(但他們不應該顯示,因爲它沒有價值)。 代碼:

<Border Height="30" Margin="15" Grid.RowSpan="6" > 
       <Border.Background> 
        <LinearGradientBrush StartPoint="0.0,0" EndPoint="1.0,0"> 
         <GradientStopCollection> 
          <GradientStop Offset="0.0" Color="{Binding FillBar, UpdateSourceTrigger=PropertyChanged}" /> 

          <GradientStop Offset="{Binding Value, UpdateSourceTrigger=PropertyChanged}" /> 

         </GradientStopCollection> 
        </LinearGradientBrush> 
       </Border.Background> 
      </Border> 

enter image description here

究竟我要如何擺脫透明色在欄的中間/結束的衰落?

當我嘗試將相同顏色的第二偏移我得到全長杆(100%)和縮放再次無效。


我有以下的ItemsControl與代表一個簡單的條形圖DateTemplate:

<ItemsControl x:Name="icGrafiek" 
      Margin="0,0,0,0" 
      ItemsSource="{Binding Source={StaticResource Grafiek}}" 
      ItemTemplate="{DynamicResource GrafiekItemTemplate}" 
      RenderTransformOrigin="1,0.5" Grid.RowSpan="6" Grid.Column="1"/> 

<DataTemplate x:Key="GrafiekItemTemplate"> 
      <Grid> 
      <Border Height="30" Margin="15" Grid.RowSpan="6" > 
       <Border.Background> 

        <LinearGradientBrush StartPoint="0.0,0" EndPoint="1.0,0"> 
         <GradientStopCollection> 
          <GradientStop Offset="0.0" Color="#fff" /> 

          <GradientStop Offset="{Binding Value, UpdateSourceTrigger=PropertyChanged}" 
              Color="{Binding Fill, UpdateSourceTrigger=PropertyChanged}" /> 

          <GradientStop Offset="{Binding Value, UpdateSourceTrigger=PropertyChanged}" 
              Color="{Binding Fill, UpdateSourceTrigger=PropertyChanged}" />               
         </GradientStopCollection> 
        </LinearGradientBrush>     
       </Border.Background> 
      </Border> 
     </Grid> 
    </DataTemplate> 

問題是實際顯示的我的我的圖表控件條的顏色。

下獲取顯示: GradientBrush

GradientBrush以前我用一個Rectangle而不是創造吧。我用了GradientBrush,所以我可以規模我吧(在Binding價值返回1.0和0之間,值的列表,使他們獲得縮放)。 隨着一個矩形我卡住了,根本沒有辦法縮放我的酒吧根據1.0 - 0值被返回。

舊代碼Rectangle

<DataTemplate x:Key="GrafiekItemTemplate"> 
      <Grid> 
       <Rectangle StrokeThickness="0" Height="30" 
          Margin="15" 
          HorizontalAlignment="Left" 
          VerticalAlignment="Stretch" 
          Width="{Binding Value, UpdateSourceTrigger=PropertyChanged}" 
          Fill="{Binding Fill, UpdateSourceTrigger=PropertyChanged}"> 
        <Rectangle.LayoutTransform> 
         <ScaleTransform ScaleX="20" /> 
        </Rectangle.LayoutTransform> 
       </Rectangle> 
      </Grid> 
    </DataTemplate> 

當我用一個矩形的填充綁定我的圖表看起來像這樣(像它應該): 的填寫Binding基本收益用十六進制值來獲得這些顏色的列表。

Rectangle


我如何填滿LinearGradientBrush與顏色顯示在上面的圖片(陣列保持的顏色的十六進制值)?顏色的順序保持不變。

或者,如果這是不可能的實際上,我怎麼用矩形把它關閉? 如果還有其他方案與矩形我可以再次實施。

問候PeterP。

+0

PeterP,我想你的大部分問題的根本原因是缺乏約束力轉換器。您不需要直接綁定值,而是將此值轉換爲適合您的演示需求。看一看:http://www.switchonthecode.com/tutorials/wpf-tutorial-binding-converters – 2012-05-01 14:47:12

+0

您好海梅。也許但不確定如何用轉換器來解決這個問題。 – PeterP

回答

1

彼得,

在矩形你使用數據的填寫綁定到矩形的填充財產一樣。兩者都是類型刷(或派生類型)

在漸變停止的情況下,它期待一個顏色對象,而不是刷,以便可以創建類型顏色的另一種數據屬性。

+1

側面問題:爲什麼您必須使用相同的偏移和顏色進行漸變停止? – 2012-05-01 17:31:01

+0

喜海梅發在我的崗位之上的編輯,越來越終於接近了一個解決方案,但作爲最後一個問題。 – PeterP

+1

對不起,剛纔注意到我旁邊的一個可怕的錯字問題。我的意思是:爲什麼你有兩個相同的偏移和顏色的漸變停止? – 2012-05-02 06:50:03