【发布时间】:2015-04-29 15:11:40
【问题描述】:
是否可以将 DataGridTextColumn 绑定到我的 xaml.cs 中的方法?
这是我的 XAML
<my:DataGrid.Columns>
<my:DataGridTextColumn Binding="{Binding IdItem}" Header="Id Item" Width="150" IsReadOnly="True"/>
<my:DataGridTextColumn Binding="{Binding concatenarMoneda}" Header="Costo" Width="*"/>
</my:DataGrid.Columns>
我想将第二列绑定到以下函数
private string concatenarMoneda
{
get {
return viewModel.Registro.Costo.ToString() + " " + viewModel.Registro.SOSMoneda.Descripcion;
}
}
这应该导致两个属性在同一列中连接
我已经看到这与文本块一起工作,但在这种情况下它不起作用。
更新应要求提供更多代码
这是我的整个网格
<Grid Grid.Row="2" Background="{DynamicResource GrisOscuro}">
<my:DataGrid EnableRowVirtualization="False" x:Name="DataGridDatos" Margin="32"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
AutoGenerateColumns="False" Background="White"
SelectionChanged="DataGridDatos_SelectionChanged"
SelectedItem="{Binding Registro}"
ItemsSource="{Binding Registros}"
IsEnabled="{Binding DataGridDatosEstado}"
SelectedIndex="{Binding IndiceActual}"
IsReadOnly="True">
<my:DataGrid.Columns>
<my:DataGridTextColumn Binding="{Binding IdItem}" Header="Id Item" Width="150" IsReadOnly="True"/>
<my:DataGridTextColumn Binding="{Binding SOSProveedor.Nombre}" Header="Proveedor" Width="150" IsReadOnly="True"/>
<my:DataGridTextColumn Binding="{Binding SOSServicio.Descripcion}" Header="Servicio" Width="*"/>
<my:DataGridTextColumn Binding="{Binding SOSUbicacion.Descripcion}" Header="Ubicacion" Width="*"/>
<my:DataGridTextColumn Binding="{Binding SOSTipoPagoItem.Descripcion}" Header="Tipo Pago Item" Width="*"/>
<my:DataGridTextColumn Binding="{Binding FechaInicioVigencia , StringFormat={}{0:dd/MM/yy}}" Header="Fecha Inicio" Width="*"/>
<my:DataGridTextColumn Binding="{Binding Estatus}" Header="Estatus" Width="*"/>
<my:DataGridTextColumn Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}},
Path=concatenarMoneda,Mode=OneWay}" Header="Costo" Width="*"/>
</my:DataGrid.Columns>
</my:DataGrid>
</Grid>
该网格被 XAML 中的父元素包围
另一方面,在我的 xaml.cs 中,我有上面显示的 concatenarMoneda 函数
我的 ViewModel 会从 Model 中获取所有数据...使用诸如此类的方法
public ObservableCollection<SOSItem> Items
{
get
{
if (_items == null)
{
_items = new ObservableCollection<SOSItem>(db.SOSItems.Select(AppRow => AppRow));
}
return _items;
}
set
{
_items = value;
NotifyPropertyChanged("Items");
}
}
也许你建议的祖先类型应该不是
AncestorType={x:Type Window}
?
【问题讨论】:
-
当您使用多重绑定和 multiValueConverter 时可能会起作用
-
在这里你可以找到这个codeproject.com/Articles/328978/…的例子
-
我会尝试并回复您。对于这样一个小东西,似乎代码太多了!!但没关系
-
我真的不知道如何在我的 dataGridTextColumn 中使用该转换器...我已经创建了转换器但找不到使用它的方法。 dataGridTextColumn 不接受多重绑定