this is my simple try-it application创建一个包含2行的网格。第一行的高度绑定到属性。我分配给它的值只能在运行时使用。我试图让它在设计时也起作用,但我没有这样做(我使用this thread来编写我的应用程序。)
请帮我看看我想念的东西。谢谢!
[编辑]
我这样做的原因是我想动态设置顶部网格行的高度,即。 Grid.Row="0"
,为标题栏高度。在我的应用程序的某个地方,视图已加载并与标题栏重叠。
答案 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;
}
}
}
}
}