我正在使用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
。我不确定这对问题是否重要。
答案 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
上的属性。