在 DataGridTextColumn 中绑定 ViewModel 属性

Ste*_*mid 1 c# data-binding wpf mvvm catel

对于一个应用程序,我需要创建一个DataGridDataGridTextColumn它有MultiBinding。第一个Binding使用 ItemsSource 中给出的属性,第二个Binding应该使用我的 ViewModel 中的属性。

<DataGridTextColumn Header="Hourly wage" SortMemberPath="HourlyWage">
    <DataGridTextColumn.Binding>
        <MultiBinding StringFormat="{}{0}{1}">
            <Binding Path="HourlyWage" />
            <Binding Path="CurrencyUnit" />
        </MultiBinding>
    </DataGridTextColumn.Binding>
</DataGridTextColumn>
Run Code Online (Sandbox Code Playgroud)

在这种情况下HourlyWage是当前项目的属性。CurrencyUnit是我的 ViewModel 中的一个属性。如果我启动我的应用程序,此列是空的。那么我如何让它同时显示呢?

我使用 Catel 作为我的 MVVM 框架和 MahApps.Metro 作为我的 GUI。我无法在我的视图中创建 ViewModel,因为它由 Catel 处理。

问候, 斯特凡

hel*_*elb 5

如果无法访问视图模型,则可以按如下方式定义第二个绑定:

<Binding RelativeSource="{RelativeSource AncestorType=DataGrid}"
         Path="DataContext.CurrencyUnit" />
Run Code Online (Sandbox Code Playgroud)

Binding 的源将设置为 DataGrid 实例。路径DataContext.CurrencyUnit将引用属性YourViewModel.CurrencyUnit,假设您的视图模型保存数据网格的项目集合和货币单位属性。