C# 如何在设计WPF控件时查看折叠的元素?

C# 如何在设计WPF控件时查看折叠的元素?,c#,.net,wpf,datagrid,visibility,C#,.net,Wpf,Datagrid,Visibility,我将DataGrid设置为在没有项目时崩溃 <DataGrid Name="dataGrid" Visibility="{Binding HasItems, ElementName=dataGrid, Converter={StaticResource BooleanToVisibilityConverter}}"> </DataGrid> 问题是,我希望它出

我将DataGrid设置为在没有项目时崩溃

<DataGrid Name="dataGrid"
          Visibility="{Binding HasItems,
                       ElementName=dataGrid,
                       Converter={StaticResource BooleanToVisibilityConverter}}">
</DataGrid>
问题是,我希望它出现在设计模式上。怎么做?我应该创建假数据吗

我试过了

    private void UserControl_Loaded(object sender, RoutedEventArgs e)
    {
        if (DesignerProperties.GetIsInDesignMode(this))
        {
            this.dataGrid.ItemsSource = new List<Table> { new Table() };
        }
    }

但它不起作用

我在Silverlight应用程序中遇到了类似的问题,在用户登录之前,我不想向用户显示任何内容。我将视图的可见性设置为在视图的构造函数中折叠,然后在用户经过身份验证/授权后恢复为可见。我建议您在视图的构造函数中绑定网格的可见性属性,以便在代码执行之前不会生效,从而允许您在设计视图中查看网格。我在WPF方面做得不多,但类似的东西可能会有用:

Binding b = new Binding("Visibility");
b.Source = dataGrid.HasItems;
b.Converter = new BooleanToVisibilityConverter();
BindingOperations.SetBinding(dataGrid, VisibilityProperty, b);

同样,我不知道这在WPF中是否会起作用,但也许这会让你离得更近。

我在Silverlight应用程序中遇到类似问题,在用户登录之前,我不想向用户显示任何内容。我将视图的可见性设置为在视图的构造函数中折叠,然后在用户经过身份验证/授权后恢复为可见。我建议您在视图的构造函数中绑定网格的可见性属性,以便在代码执行之前不会生效,从而允许您在设计视图中查看网格。我在WPF方面做得不多,但类似的东西可能会有用:

Binding b = new Binding("Visibility");
b.Source = dataGrid.HasItems;
b.Converter = new BooleanToVisibilityConverter();
BindingOperations.SetBinding(dataGrid, VisibilityProperty, b);

同样,我不知道这在WPF中是否有效,但也许这会让你更接近。

如果我了解你想做什么,这对我来说很有效:

<Window x:Class="WPFScratch.MainWindow"
    xmlns:local="clr-namespace:WPFScratch"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    mc:Ignorable="d"
    d:DesignHeight="300"  
    d:DesignWidth="592"  
    d:DataContext="{d:DesignInstance local:MyDesignTimeViewModel, IsDesignTimeCreatable=True}"
    Title="MainWindow" SizeToContent="WidthAndHeight">
<Window.Resources>
    <local:BoolToVisibilityConverter
     x:Key="BoolToHiddenConverter"
     TrueValue="Visible" FalseValue="Hidden" />        
</Window.Resources>
<DockPanel>       
    <DataGrid Name="dataGrid" ItemsSource="{Binding People}"
      Visibility="{Binding HasItems,
                   ElementName=dataGrid,
                   Converter={StaticResource BoolToHiddenConverter}}" AutoGenerateColumns="True">

    </DataGrid>
</DockPanel>

如果我了解你想做什么,这对我来说很好:

<Window x:Class="WPFScratch.MainWindow"
    xmlns:local="clr-namespace:WPFScratch"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    mc:Ignorable="d"
    d:DesignHeight="300"  
    d:DesignWidth="592"  
    d:DataContext="{d:DesignInstance local:MyDesignTimeViewModel, IsDesignTimeCreatable=True}"
    Title="MainWindow" SizeToContent="WidthAndHeight">
<Window.Resources>
    <local:BoolToVisibilityConverter
     x:Key="BoolToHiddenConverter"
     TrueValue="Visible" FalseValue="Hidden" />        
</Window.Resources>
<DockPanel>       
    <DataGrid Name="dataGrid" ItemsSource="{Binding People}"
      Visibility="{Binding HasItems,
                   ElementName=dataGrid,
                   Converter={StaticResource BoolToHiddenConverter}}" AutoGenerateColumns="True">

    </DataGrid>
</DockPanel>

BooleantVisibilityConverter在做什么?我假设它将true转换为Visible,将false转换为Collapsed。BooleantVisibilityConverter在做什么?我假设它将true转换为Visible,将false转换为Collapsed。