2015-07-06 66 views
0

當我想從viewModel獲得ChartColor時,它會嘗試在BugsData中找到它,因爲我設置了ItemsSource="{Binding BugsDataCollection}"。你有解決方案嗎?如何將其他來源設置爲屬性時,將項目源設置在同一個模板中?

這是我的代碼:

<Style x:Key="ColumnColor" TargetType="DVC:ColumnDataPoint"> 
    <Setter Property="Background" Value="{Binding ChartColor}"/> 
</Style> 

<ControlTemplate x:Key="ColumnSeriesTemplate"> 
    <DVC:Chart> 
     <DVC:Chart.Series> 
      <!-- 
      <DVC:ColumnSeries.DataPointStyle> 
       <Style TargetType="{x:Type DVC:ColumnDataPoint}"> 
        <Setter Property="Background" Value="{Binding ChartColor}" /> 
       </Style> 
      </DVC:ColumnSeries.DataPointStyle> 
      --> 
      <DVC:ColumnSeries DataPointStyle="{StaticResource ColumnColor}" 
        Title="{ComponentType}" 
        ItemsSource="{Binding BugsDataCollection}" 
        IndependentValueBinding="{Binding Path=Key}" 
        DependentValueBinding="{Binding Path=Value}"></DVC:ColumnSeries> 
     </DVC:Chart.Series> 
    </DVC:Chart> 
</ControlTemplate> 
+0

似乎DataContext未指向公開ChartColor屬性的視圖模型。嘗試將DataContext更改爲具有該元素的元素。 – Dabblernl

回答

0

您可以使用相對源綁定來訪問更高級元素的數據上下文在層次和訪問您的完整視圖模型:

<Setter Property="Background" 
    Value="{Binding DataContext.ChartColor, RelativeSource={RelativeSource AncestorType={x:Type DVC:Chart}}}" /> 
+0

我上傳了代碼爲dynmin的用戶控件,我也上傳了viewmodel動態的,所以我不能在本地資源中定義veiw模塊 –

+0

我不知道你想告訴我什麼。 – poke

0

,你必須明確地指定綁定的源,因爲默認源(的DataContext)指向錯誤的對象(BugsData)。

您可以通過指定來源:

{Binding Source=...} 
{Binding RelativeSource=...} 
{Binding ElementName=...} 

試試這個:

Value="{Binding DataContext.ChartColor, 
       RelativeSource={RelativeSource AncestorType=DVC:Chart}}" 

,或者你可以嘗試視圖模型添加到用戶控件的資源,並使用StaticResource的查找視圖模型:

Value="{Binding DataContext.ChartColor, 
       Source={StaticResouce MyViewModelResourceKey}}" 
+0

我上傳了一個用戶控件,該用戶控件使用了代碼dynmin,並且我還上傳了viewmodel dynamic,所以我不能在本地資源中定義veiw模塊。 –

相關問題