0

我正在创建一个带有DataGrid.

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>

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

4

3 回答 3

1

您可以尝试通过 Binding 的 RelativeSource 来实现。例如:

<TextBlock Text="{Binding Property.NodeCurrency, RelativeSource={RelativeSource  AncestorType=Window}}"/>
于 2013-01-15T09:24:45.403 回答
1

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

<TextBlock
   Text="{Binding Property.NodeCurrency, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"/>
于 2013-01-15T09:25:04.263 回答
0

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

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

缺少的一点是指定我绑定到 的DataContextUserControl然后深入研究ViewModel.

于 2013-01-15T09:48:44.097 回答