簡體   English   中英

打開和關閉WPF DataGrid背景圖像?

[英]Turning a WPF DataGrid background image on and off?

我有一個DataGrid,當它為空時,我希望顯示一個背景圖像。 當填充DataGrid時,我希望圖像消失,並在再次清除DataGrid時重新出現。

這是通過XAML還是C#實現的?

if(myDataGridView.Rows.Count == 0) {

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

}

else {

// it is not empty 

}

如果您使用的是MVVM設計模式,通常應該避免使用代碼隱藏。 在XAML中執行此操作非常簡單:

將一個Image元素放在數據網格上(將兩者放在一個Grid中並將Image放在DataGrid下面),然后使用新轉換器將Image的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;
    }
}

我假設您正在使用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;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM