Init网格行高不起作用

时间:2010-10-21 12:30:16

标签: wpf grid runtime height

this is my simple try-it application创建一个包含2行的网格。第一行的高度绑定到属性。我分配给它的值只能在运行时使用。我试图让它在设计时也起作用,但我没有这样做(我使用this thread来编写我的应用程序。)

请帮我看看我想念的东西。谢谢!

[编辑]

我这样做的原因是我想动态设置顶部网格行的高度,即。 Grid.Row="0",为标题栏高度。在我的应用程序的某个地方,视图已加载并与标题栏重叠。

1 个答案:

答案 0 :(得分:2)

你正试图做一个非常奇怪的技巧,这不应该起作用。尝试进行以下更改。

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