2013-01-15 79 views
0

我使用DataGrid創建了WPF視圖。DataGrid重複列

綁定到ViewModel上的字段Properties

但是,對於其中一列,我希望每行都具有與View模型上某些其他屬性相同的值綁定。

具體而言,該表顯示已命名的貨幣值,重複的列將顯示貨幣代碼(每行的代碼相同)。

我無法弄清楚如何做到這一點,我試圖使用以下命令:

<DataGrid ItemsSource="{Binding Properties}"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Target" Binding="{Binding Target}"/> 
     <DataGridTextColumn Header="Value" Binding="{Binding Value}"/> 
     <DataGridTemplateColumn Header="Currency"> 
     <DataGridTemplateColumn.CellTemplate> 
      <DataTemplate> 
      <TextBlock Text="{Binding Properties.NodeCurrency}"/> 
      </DataTemplate> 
     </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
    </DataGrid> 

我使用的是卡利框架沒有在VIEW類型DataContext。我不確定這是否對問題有影響。

回答

0

隨着來自應答者的實際結合我需要的幫助:

<TextBlock Text="{Binding DataContext.Property.NodeCurrency, RelativeSource={RelativeSource AncestorType=UserControl}}"/> 

的缺失位被指定我綁定到UserControlDataContext,然後鑽研下到上的屬性第e ViewModel

1

你可以嘗試通過Binding的RelativeSource來做到這一點。例如:

<TextBlock Text="{Binding Property.NodeCurrency, RelativeSource={RelativeSource AncestorType=Window}}"/> 
+0

你打敗了我:D –

+0

好吧,視圖是作爲UserControl實現的 - 可能是因爲它是更大窗口的一部分。我已經嘗試使用Window和UserControl的相對源,並且列保持空白。 – Nick

+0

@Nick試試'DataGrid'。你在輸出窗口中記錄了一些錯誤嗎? –

1

您可以在綁定來綁定到其他的DataContext比當前使用的RelativeSource/FindAncestor:

<TextBlock 
    Text="{Binding Property.NodeCurrency, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"/> 
+0

感謝您的幫助。 – Nick