我正在尝试从后面的代码更改我的数据网格的可见性,但它不起作用
private void afch_data_Click(object sender, System.Windows.RoutedEventArgs e)
{
if (donne_compte.IsVisible) // this is a grid and It's visible
{
dgComptes.Visibility = Visibility.Visible;
//when I breakpoint here , I find that the datagrid visibilty `property is still set to hidden
}
}
编辑 这是我的数据网格 Xaml,它很简单:
<DataGrid x:Name="dgComptes" CanUserAddRows="False" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding ComCollection}" RowHeaderWidth="0" HorizontalScrollBarVisibility="Disabled" HorizontalAlignment="Left" Margin="529.534,84.016,-390.033,0" VerticalAlignment="Top" Height="Auto" MaxHeight="200" Width="395.429" RenderTransformOrigin="0.5,0.5" Background="#FFCFCFCF" ColumnWidth="*" HorizontalGridLinesBrush="Black" VerticalGridLinesBrush="Black" RowBackground="#FFCFCFCF" AreRowDetailsFrozen="True" Style="{DynamicResource DataGridStyle2}" CellEditEnding="dataGrid1_CellEditEnding" CurrentCellChanged="dataGrid1_CurrentCellChanged" SelectionChanged="dataGrid1_SelectionChanged" AutoGeneratingColumn="dataGrid1_AutoGeneratingColumn" AutoGenerateColumns="False" >
<DataGrid.Columns >
<DataGridTemplateColumn x:Name="champ_supp2" >
<DataGridTemplateColumn.CellTemplate >
<DataTemplate>
<Button x:Name="supprime" Content="Button" Width="30" Height="30" Style="{DynamicResource ButtonStyle12}" Click="supprime_Click"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Id" Binding="{Binding ID}" />
<DataGridTextColumn Header="Taille" Binding="{Binding TAILLE}" />
<DataGridTextColumn Header="Client" Binding="{Binding CLIENT}" />
<DataGridTextColumn Header="D.arrivée" Binding="{Binding D_ARRIVEE}" />
<DataGridTextColumn Header="D.départ" Binding="{Binding D_DEPART}" />
</DataGrid.Columns>
</DataGrid>
最佳答案
免责声明
设置可见性适用于
DataGrid
。刚刚检查过,这应该可以正常工作:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="25"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Button Grid.Row="0" Content="Show DataGrid" Click="Button_Click"/>
<DataGrid Visibility="Hidden"
Grid.Row="1"
x:Name="gridToHide">
</DataGrid>
</Grid>
后面有代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
this.gridToHide.Visibility = Visibility.Visible;
}
解决方案
可能禁止/阻止设置
UIElement
的 Visibility
属性的是父元素的 Visibility
。
如果父元素是隐藏的,则无法使其祖先可见。 Visibility
的值将更改,但 IsVisible
将保持 false
。
要解决此问题,您必须检查元素(父元素)的逻辑树并搜索隐藏元素。
关于c# - Wpf 从后面的代码更改可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29062998/