c# - Wpf 从后面的代码更改可见性

标签 c# wpf

我正在尝试从后面的代码更改我的数据网格的可见性,但它不起作用

 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;
}


解决方案


可能禁止/阻止设置 UIElementVisibility 属性的是父元素的 Visibility。 如果父元素是隐藏的,则无法使其祖先可见。 Visibility 的值将更改,但 IsVisible 将保持 false
要解决此问题,您必须检查元素(父元素)的逻辑树并搜索隐藏元素。

关于c# - Wpf 从后面的代码更改可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29062998/

相关文章:

c# - RC4 加密 KSA key 越界

wpf - 重构 DataTemplate (XAML) 以减少重复

wpf - 无法在数据触发器中使用标签的自定义属性

C# 泛型 - 模仿 C++ 模板特化

c# - 按字符串选择范围

c# - 从 C# 调用 Python 应用程序/脚本

WPF 网格布局

c# - 如何使用正则表达式提取字符串的IP

c# - 从 BitmapImage 获取支持的图像格式

c# - 为什么我的按钮在 MouseOver 上没有改变颜色?