我有一個DataGrid,當它爲空時,我希望顯示一個背景圖像。當填充DataGrid時,我希望圖像消失,並且如果DataGrid再次被清除,則會重新出現。打開和關閉WPF DataGrid背景圖像?
這是可能通過XAML或C#?
我有一個DataGrid,當它爲空時,我希望顯示一個背景圖像。當填充DataGrid時,我希望圖像消失,並且如果DataGrid再次被清除,則會重新出現。打開和關閉WPF DataGrid背景圖像?
這是可能通過XAML或C#?
我假設你使用的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;
}
if(myDataGridView.Rows.Count == 0) {
dataGrid.Background = new ImageBrush("exampleImage.png");
}
else {
// it is not empty
}
如果您使用的是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;
}
}
您應該能夠使用'路徑= HasItems'並使用內置'BooleanToVisibilityConverter'的WPF 。 –
是...... Path = HasItems更好 –