2012-11-22 12 views
5

我有一個DataGrid,當它爲空時,我希望顯示一個背景圖像。當填充DataGrid時,我希望圖像消失,並且如果DataGrid再次被清除,則會重新出現。打開和關閉WPF DataGrid背景圖像?

這是可能通過XAML或C#?

回答

0

我假設你使用的WPF,與Windows窗體將是非常困難的。

System.Windows.Controls.DataGrid dataGrid = new System.Windows.Controls.DataGrid(); 

    public void Initialize() 
    { 
     dataGrid.Loaded += new System.Windows.RoutedEventHandler(dataGrid_Loaded); 
     dataGrid.Unloaded += new System.Windows.RoutedEventHandler(dataGrid_Unloaded); 

     // Show image right away. 
     this.dataGrid_Unloaded(null, null); 
    } 

    void dataGrid_Unloaded(object sender, System.Windows.RoutedEventArgs e) 
    { 
     // Provide some image here. 
     dataGrid.Background = new System.Windows.Media.ImageBrush(); 
    } 

    void dataGrid_Loaded(object sender, System.Windows.RoutedEventArgs e) 
    { 
     dataGrid.Background = System.Windows.Media.Brushes.Gray; 
    } 
2
if(myDataGridView.Rows.Count == 0) { 

dataGrid.Background = new ImageBrush("exampleImage.png"); 

} 

else { 

// it is not empty 

} 
2

如果您使用的是MVVM設計模式,你應儘量避免使用代碼隱藏。在XAML中執行此操作相當簡單:

將一個Image元素放在數據網格上(將兩者放在一個網格中,並將該圖像放在DataGrid下方),然後將圖像的Visibility屬性綁定到DataGrid的Items.Count屬性與新的轉換器:

<Grid> 
    <Grid.Resources> 
     <local:GridCountToVisibilityConverter x:Key="GridCountToVisibilityConverter"/> 
    </Grid.Resources> 
    <DataGrid x:Name="grid"/> 
    <Image Source="image.jpg" Visibility="{Binding ElementName=grid, Path=Items.Count, Converter={StaticResource GridCountToVisibilityConverter}}" /> 
</Grid> 

轉換器應該是這樣的:

public class GridCountToVisibilityConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     var count = (int)value; 
     return count == 0? Visibility.Visible : Visibility.Collapsed; 
    } 
} 
+2

您應該能夠使用'路徑= HasItems'並使用內置'BooleanToVisibilityConverter'的WPF 。 –

+0

是...... Path = HasItems更好 –