Высота строки сетки инициализации не работает - PullRequest
2 голосов
/ 21 октября 2010

это мое простое пробное приложение , которое создает сетку из 2 строк. Высота 1-го ряда привязана к свойствам. Значение, которое я ему присвоил, работает только во время выполнения. Я пытался заставить его работать и во время разработки, но мне это не удалось (я использовал эту ветку для написания своего приложения).

Пожалуйста, помогите мне увидеть, что я скучаю. Спасибо!

[Изменить]

Причина, по которой я это делаю, заключается в том, что я хочу динамически установить высоту верхнего ряда сетки, т.е. Grid.Row="0", высота строки заголовка. Где-то в моем приложении представление загружается и перекрывает строку заголовка.

1 Ответ

2 голосов
/ 21 октября 2010

Вы пытаетесь сделать очень странный трюк, который не должен работать.Попробуйте внести следующие изменения.

MainWindow.xaml.cs - постарайтесь всегда сохранять ясность кода.

namespace WpfTryIt
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

MainWindowxaml

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