DataGrid重复列

时间:2013-01-15 09:10:25

标签: c# wpf datagrid

我正在使用DataGrid创建WPF视图。

DataGrid绑定到Properties上的字段ViewModel

但是,对于其中一列,我希望每一行都有相同的值绑定到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>

我正在使用Caliburn框架,视图中没有键入DataContext。我不确定这对问题是否重要。

3 个答案:

答案 0 :(得分:1)

您可以尝试通过RelativeSource of Binding来完成。例如:

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

答案 1 :(得分:1)

您可以在绑定上使用RelativeSource / FindAncestor绑定到除当前DataContext之外的其他DataContext:

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

答案 2 :(得分:0)

在两位回答者的协助下,我需要的实际绑定是:

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

缺少的一点是指定我绑定到DataContext的{​​{1}},然后深入研究UserControl上的属性。