初始化网格行高不起作用
Posted
技术标签:
【中文标题】初始化网格行高不起作用【英文标题】:Init grid row height doesn't work 【发布时间】:2011-04-28 14:19:07 【问题描述】:this is my simple try-it application 创建一个有 2 行的网格。第一行的高度绑定到一个属性。我分配给它的值仅在运行时有效。我试图让它在设计时也能工作,但我没能做到(我使用this thread 编写我的应用程序)。
请帮我看看我错过了什么。谢谢!
[编辑]
我这样做的原因是我想动态设置顶部网格行的高度,即。 Grid.Row="0"
,作为标题栏的高度。在我的应用程序的某处,视图加载并与标题栏重叠。
【问题讨论】:
【参考方案1】:你试图做一个非常奇怪的把戏,这是不应该的。尝试进行以下更改。
MainWindow.xaml.cs -- 尽量保持代码隐藏清晰。
namespace WpfTryIt
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
public MainWindow()
InitializeComponent();
MainWindow.xaml
<Window x:Class="WpfTryIt.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
xmlns:s ="clr-namespace:WpfTryIt"
>
<Window.DataContext>
<s:FakeDataContext></s:FakeDataContext>
</Window.DataContext>
<Button Content="Binding Path=BindingHeight"/>
</Window>
还有一个新的独立数据上下文类,其行为因模式而异:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Windows;
namespace WpfTryIt
public class FakeDataContext
public int BindingHeight
get
// Check for design mode.
if ((bool)(DesignerProperties.IsInDesignModeProperty.GetMetadata(typeof(DependencyObject)).DefaultValue))
//in Design mode
return 100;
else
return 200;
【讨论】:
如果 FakeDataContext 的构造函数需要一些参数,我该如何修改您的代码以使其正常工作? 我还更新了我的问题以解释我为什么尝试strange trick
。
@Nam Gi VU:在 XAML 中,您只能创建具有空构造函数的对象。如果你还想用参数实例化一个对象,看看这个问题***.com/questions/2335900/…以上是关于初始化网格行高不起作用的主要内容,如果未能解决你的问题,请参考以下文章
使用 rowtemplate 更改 datagridview 行高但不起作用
行高在 Outlook 2010 for HTML 电子邮件中不起作用