WPF 动态插入grid 将Grid中的一个空白布局,用同样大小的一个Grid插入,怎么实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 动态插入grid 将Grid中的一个空白布局,用同样大小的一个Grid插入,怎么实现相关的知识,希望对你有一定的参考价值。

这样应该不可以吧。不过,你可以把grid的相关属性设一下。如边距为0等等。 参考技术A Grid gparent = new Grid();
gparent.Width = 200;
gparent.Height = 300;
gparent.Background = new SolidColorBrush(Colors.Red);
gparent.Name = "parent";
this.AddChild(gparent);//window的根grid
grid gchild=new grid();
gparent.Children.Add(gchild);
gchild.SetValue(Grid.RowProperty, 0);
gchild.SetValue(Grid.ColumnProperty, 0);
参考技术B 电脑键盘常见故障维修与维护方法大全
  由于整个机械式键盘是安装在一整块印刷板电路上的,要取下一个按键,特别是里层的按键,操作比较麻烦的事。
键盘在使用过程中,若按某键失效或反应迟钝,此时即使用力敲打键盘也无济于事,所以必须及时进行修理。
下面介绍一下拆御顺序及方法:
  一、键盘常见故障维修
  键盘在使用过程中,故障的表现形式是多种多样的,原因也是多方面的。有接触不良故障,有按键本身的机械故障,还有逻辑电路故障、虚焊、假焊、脱焊和金属孔氧化等故障.维修时要根据不同的故障现象进行分析判断,找出产生故障原因,进行相应的修理。
1、某些字符不能输入。若只有某一个键字符不能输入,则可能是该按键失效或焊点虚焊。检查时,按照上面叙述的方法打开键盘,用万用表电阻档测量接点的通断状态。若键按下时始终不导通,则说明按键簧片疲劳或接触不良,需要修理或更换;若键按下时接点通断正常,说明可能是因虚焊、脱焊或金屑孔氧化所致,可沿着印刷线路逐段测量,找出故障进行重焊;若因金属孔氧化而失效,可将氧化层清洗干净,然后重新焊牢;若金属孔完全脱落而造成断路时,可另加焊引线进行连接。
  2、键盘上一些键,如空格键、回车键不起作用,有时,需按无数次才输入—个或两个字符,有的键,如光标键按下后不再起来,屏幕上光标连续移动,此时键盘其它字符不能输入,需再按一次才能弹起来。
  这种故障为键盘的“卡键”故障,不仅仅是使用很久的旧键盘,有个别没用多久的新键盘上,键盘的卡键故障也有时发生。出现键盘的卡键现象主要由以下两个原因造成的:一种原因就是键帽下面的插柱位置偏移,使得键帽按下后与键体外壳卡住不能弹起而造成了卡键,此原因多发生在新键盘或使用不久的键盘上。
另一个原因就是按键长久使用后,复位弹簧弹性变得很差,弹片与按杆摩擦力变大,不能使按键弹起而造成卡键,此种原因多发生在长久使用的键盘上。当键盘出现卡键故障时,可将键帽拨下,然后按动按杆。若按杆弹不起来或乏力,则是由第二种原因造成的,否则为第一种原因所致。
若是由于键帽与键体外壳卡住的原因造成“卡键”故障,则可在键帽与键体之间放一个垫片,该垫片可用稍硬一些的塑料(如废弃的软磁盘外套)做成,其大小等于或略大于键体尺寸,并且在按杆通过的位置开一个可使铵杆自由通过的方孔,将其套在按杆上后,插上键帽;用此垫片阻止键帽与键体卡住,即可修复故障按键;若是由于弹簧疲劳,弹片阻力变大的原因造成卡键故障,这时可特键体打开,稍微拉伸复位弹簧使其恢复弹性;取下弹片将键体恢复。通过取下弹片,减少按杆弹起的阻力,从而使故障按键得到了恢复。
    3、若有多个既不在同一列,也不在同一行的按键都不能输入,则可能是列线或行线某处断路,或者可能是逻辑门电路产生故障。这时可用100MHz的高频示波器进行检测,找出故障器件虚焊点,然后进行修复。
  4、键盘输入与屏幕显示的字符不一致。此种故障可能是由于电路板上产生短路现象造成的,其表现是按这一键却显示为同一列的其他字符,此时可用万用表或示波器进行测量,确定故障点后进行修复。
  5、按下一个键产生一串多种字符,或按键时字符乱跳,这种现象是由逻辑电路故障造成的。先选中某一列字符,若是不含回车键的某行某列,有可能产生多个其他字符现象;若是含回车键的一列,将会产生字符乱跳且不能最后进入系统的现象,用示波器检查逻辑电路芯片,找出故障芯片后更换同型号的新芯片,排除故障

  二、键盘的拆卸与基本维护:

  1、翻转键盘,将原来卡住的底板用锣丝刀往左右方向敲击。拆下键盘外壳,取出整个键盘,将键帽拔出。

  2、用电烙铁将按键的焊角从印刷电路板上焊掉,使开关和印刷电路板脱离(电铬铁应有良好的接地,以防将键盘逻辑器件击穿)。

  3、用镊子将按键两边的定位片向中间靠拢,轻轻从下面一顶,按键便能从定位铁中取出.

  4、取下键杆,拿下弹簧和簧片,用无水酒精或四氯化碳等清洗液将链杆、键帽、弹簧和簧片上的灰尘和污垢清除干净,用风扇吹干或放通风处风干。

  5、若簧片产生裂纹或已断裂,则应予以更换;若簧片完好,而弹力不足时,可将其折弯部位再轻轻折弯一些,以便增强对接触簧片的压力。

  6、装好簧片、弹簧和键杆,将按键插入原位置,使焊角插入焊孔并露出尖端部分,用电烙铁将其与焊孔焊牢,装上键帽即可。

2012-7-25 11:08:25zjioggwozzj5858856848ctxぉrゑ工gυpnΘi悒l苔хxぉ箭WPF 动态插入grid 将Grid中的一个空白布局,用同样大小的一个Grid插入,怎么实现

DockPanel 中的 WPF4 TabControl/Grid 隐藏了 StatusBar

【中文标题】DockPanel 中的 WPF4 TabControl/Grid 隐藏了 StatusBar【英文标题】:WPF4 TabControl/Grid in a DockPanel is hiding StatusBar 【发布时间】:2011-04-27 15:54:45 【问题描述】:

我有一个窗口,里面有一个包含 3 个元素的 DockPanel、一个停靠在顶部的 MenuBar、一个停靠在底部的 StatusBar 和一个填充主体的 TabControl。

至少,我希望 TabControl 填充主体。在可视化设计器中,TabControl 和 StatusBar 并排布置,而不是顶部和底部。当我运行应用程序时,TabControl 展开以填充 MenuBar 下方的 DockPanel,而 StatusBar 消失。 (我猜它正在被推离父窗口的可见画布。)

我尝试按照this recommendation 设置垂直和水平对齐方式。 我尝试在状态栏上设置 ZIndex。 我尝试使用堆栈面板(都停靠在 DockPanel 内并替换 DockPanel)。 一切都无济于事:-(

以下是我用来呈现 DockPanel 的 XAML 的摘录。关于我做错了什么有什么建议吗?有没有比使用 DockPanel 更好的方法?

    <DockPanel>
    <Menu Name="_menu" Height="23" HorizontalAlignment="Stretch" VerticalAlignment="Top" DockPanel.Dock="Top">
        <MenuItem Header="_User Maintenance">
        </MenuItem>
    </Menu>
    <TabControl 
        x:Name="_panel" 
        ItemsSource="Binding Path=AllTabs" 
        Margin="0,0,0,0" 
        Visibility="Binding Path=Visibility" 
        DockPanel.Dock="Top"
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch"
        >
    </TabControl>
    <StatusBar Name="_statusBar" DockPanel.Dock="Bottom" Margin="0,0,0,0" VerticalAlignment="Bottom">
        <StatusBar.ItemsPanel>
            <ItemsPanelTemplate>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="26"/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                </Grid>
            </ItemsPanelTemplate>
        </StatusBar.ItemsPanel>
        <StatusBarItem Grid.Column="0" Grid.Row="0">
            <ProgressBar Name="_progressBar" Height="20" IsIndeterminate="True" Margin="4,0,4,0" VerticalAlignment="Top" Width="600"/>
        </StatusBarItem>
    </StatusBar>
</DockPanel>

编辑:

通过将 DockPanel.Dock="Top" 与 Horizo​​ntalAlignment 和 VerticalAlignment="Stretch" 一起添加到 TabControl,我能够让 TabControl 堆叠在 StatusBar 上方而不是旁边在视觉设计师中。现在,我的一些 TabItem 的状态栏只会在运行时消失。

我的 TabControl 数据绑定到一个 ViewModel,它公开了一个 UserControls 列表。每个 UserControl 都包含自己的数据绑定 DataGrid(通常还有一些其他控件)。在 DataGrid 仅显示几行的选项卡中,TabControl 和 TabItem 仅拉伸以包含 UserGrid,而 StatusBar 在页面底部可见。在 DataGrid 显示许多行的选项卡上,TabControl 会拉伸以填充窗口,从而隐藏了 StatusBar。

如果有帮助,这是我的 DataGrid 定义:

 <DataGrid 
        Name="_customerGrid" 
        Grid.Column="0" 
        Grid.ColumnSpan="3" 
        Grid.Row="1" 
        AutoGenerateColumns="False" 
        CanUserSortColumns="True"
        ColumnHeaderStyle="StaticResource columnHeaderStyle"
        HorizontalAlignment="Left" 
        ItemsSource="Binding Path=AllCustomers" 
        RowDetailsVisibilityMode="VisibleWhenSelected"
        RowStyle="StaticResource DataGridRowStyle"
        SelectionUnit="FullRow"
        VerticalAlignment="Top">

谢谢!

【问题讨论】:

【参考方案1】:

DockPanel 取决于添加项目的顺序。在添加占用剩余空间的项目之前,您必须先添加停靠的项目。在您的情况下,您只需将您的项目重新排列为如下所示:

<DockPanel>
  <Menu DockPanel.Dock="Top".../>
  <StatusBar DockPanel.Dock="Bottom".../>
  <TabControl/>
</DockPanel>

【讨论】:

DockPanel 的这种行为令人困惑,但逻辑上却如此正确。谢谢,这个解决方案帮助了我!

以上是关于WPF 动态插入grid 将Grid中的一个空白布局,用同样大小的一个Grid插入,怎么实现的主要内容,如果未能解决你的问题,请参考以下文章

wpf 中Grid后面总是多一空白行

wpf 如何动态的设置Grid宽和高.

WPF Grid动态显示或隐藏一列的一种方法

WPF Grid:如果我需要插入新行,是不是有一种简单的方法可以重新调整行项目?

在 WPF 中的许多控件中更改 Grid.Row 和 Grid.Column 的简单方法

WPF - 网格中组框的动态宽度