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