C# 如何在设计WPF控件时查看折叠的元素?
我将DataGrid设置为在没有项目时崩溃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 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。