0
我有一个datagrid,其itemssource通过使用MVVM绑定到模型。 数据由存储过程返回,对于特定的行,对于代码为“A”的行,我希望仅在某些列中显示数据,其余列中应显示空字符串。 如何为此创建转换器?Silverlight 4 datagrid行转换器
我有一个datagrid,其itemssource通过使用MVVM绑定到模型。 数据由存储过程返回,对于特定的行,对于代码为“A”的行,我希望仅在某些列中显示数据,其余列中应显示空字符串。 如何为此创建转换器?Silverlight 4 datagrid行转换器
有几种方法可以做到这一点。
第一个简单的方法是按摩模型中的数据,以便您拥有正确的数据绑定。
另一种方法是头部模型。这里是你如何做,可以说你有类产品,它有名称和颜色。如果颜色为红色,则不想显示名称。所以,我的XAML看起来像下面
<sdk:DataGrid x:Name="grid" AutoGenerateColumns="False" HorizontalAlignment="Left" Height="300" VerticalAlignment="Top"
Width="400">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Binding="{Binding Converter={StaticResource MyConverter}, ConverterParameter=Color}" />
<sdk:DataGridTextColumn Binding="{Binding Converter={StaticResource MyConverter}, ConverterParameter=Name}" />
</sdk:DataGrid.Columns>
</sdk:DataGrid>
我的代码背后无非是挺直的数据绑定
var products = Product.GetProducts(200); grid.ItemsSource = products;
我的转换器将具有
公共类转换器:的IValueConverter {
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
Product p = value as Product;
switch (parameter as string)
{
case "Name":
if (p.Color == "Red")
return "";
else
return p.Name;
case "Color":
return p.Color;
}
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
**在这里的技巧是绑定的,我结合全行通过列名作为parameter.This方式,即使列生成,正值转换器被称为每次和你可以申请你的逻辑。
谢谢,我认为这是一个干净的方式去做 – xaria
很高兴知道这一点。 – Nair