2012-09-05 62 views
0

的整個區域我有一個WPF DataGrid和我想顯示一條消息說「沒有找到記錄」在數據網格的中間。我可以看到這樣的添加一個包含行文字佔用WPF Datagrid的

的方法之一是增加跨越所有列和衛生組織的高度是DataGrid的高度單一的數據行,則居中行的文本。

最主要的進出口與被編程添加行德DataGrid中掙扎。

這是可能的,或者是有更簡單的方式來做到這一點?

回答

1

把「沒有找到記錄」消息在TextBlock,而是和顯示/隱藏TextBlock取決於DataGrid是否有數據。

<Grid> 

    <DataGrid x:Name="_dataGrid" /> 

    <TextBlock 
    HorizontalAlignment="Center" 
    VerticalAlignment="Center" 
    Visibility="{Binding ElementName=_dataGrid, Path=HasItems, Converter={StaticResource BooleanToInverseVisibilityConverter}, Mode=OneWay}"> 
     No Records Found 
    </TextBlock> 

</Grid> 

編輯:來源爲BooleanToInverseVisibilityConverter(我有這樣總是可以給我一堆得心應手轉換器在我的WPF項目)

public class BooleanToInverseVisibilityConverter : IValueConverter { 

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { 
     return (bool) value ? Visibility.Collapsed : Visibility.Visible; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { 
     return null; 
    } 

} 
+0

請問這個在DataGrid中顯示中間的消息? – user589195

+0

是的。無論是數據網格與文本塊是一個網格,與文本塊的Horizo​​ntalAlignment和VerticalAlignment都是中心,這樣的TextBlock將在中心顯示,覆蓋在DataGrid的頂部。 – Ross

1

您可以通過編程項目添加到DataGrid這樣的:

myDataGrid.Items.Add(new MyDataGridItem()); 

如果你已經設置的ItemsSource DataGrid的一些收藏什麼的,你需要修改集合,而不是。你可以是這樣做的:

myCollection.Add(new MyDataGridItem()); 
myDataGrid.ItemsSource = null; 
myDataGrid.ItemsSource = myCollection;