Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Bind ActualHeight 
V
    Опции темы
CYBERDREAM
Дата 31.12.2010, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 3
Всего: 28



C НГ всех.

Хочу прибиндтить ActualHeight к сурсу
Код

<TextBox Text="{Binding Path=Value}" MaxWidth="400" ActualHeight="{Binding Path=Height, Mode=OneWayToSource}"/>

Но т.к. ActualHeight readonly - сделать этого нельзя. 
Можно сделать наследник текстбокса, но что то не хочется, свои причины есть.
Расширяемых свойств увы нет.
Какие еще варианты есть, для решения проблемы?


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
HalkaR
Дата 31.12.2010, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: 5
Всего: 42



CYBERDREAM, ActualHeight - это вычисляемое значение. Т.е. запись туда чего-либо не даст эффекта. Решай задачу через Height.
PM MAIL   Вверх
CYBERDREAM
Дата 31.12.2010, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 3
Всего: 28



Код

Mode=OneWayToSource


мне нужно это значение записать в др. объект. Height - у меня Auto, то бишь Nan возращается. Так что не канает((


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
WolfTheGrey
Дата 31.12.2010, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 21.1.2009
Где: forum.vingrad.ru

Репутация: 2
Всего: 2



тоесть ты хочешь у текстбокса  записать значение из ActualHeigth в Heigth одного и тогоже контрола7?????

Это премия Говнокода. сори за испорченый праздник smile

Смысл? ActualHeigth-показывает реальный размер контрола в данный момент. тогда как Heigth - задает стартовый параметр в момент запуска программы.
PM MAIL   Вверх
CYBERDREAM
Дата 1.1.2011, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 3
Всего: 28



Цитата(WolfTheGrey @ 31.12.2010,  14:56)
тоесть ты хочешь у текстбокса  записать значение из ActualHeigth в Heigth одного и тогоже контрола7?????

Это премия Говнокода. сори за испорченый праздник smile

Смысл? ActualHeigth-показывает реальный размер контрола в данный момент. тогда как Heigth - задает стартовый параметр в момент запуска программы.

Я же не указывал что биндинг происходит к этому же текстбоксу, не так ли?

Ну если бы я это имел ввиду, не спорю ,а так вы не правильно меня поняли. 

Есть XML файл
Код

<?xml version="1.0" encoding="utf-8"?>
<InputFormHeaders xmlns="http://inquest-reports/xsd/InputFormHeaders.xsd">
  <columns>
    <group header="Преступления в сфере экономики">
      <column number="1">186</column>
      <column number="2">188</column>
      <column number="3">159</column>
      <column number="4">160</column>
      <column number="5">158</column>
      <column number="6">176</column>
      <column number="7">191</column>
      <column number="8">204</column>
      <column number="9">290</column>
      <column number="10">291</column>
      <column number="11">другие</column>
      <column number="12" readOnly="true" agregate="1 2 3 4 5 6 7 8 9 10 11">итого 1</column>
    </group>
    <group header="Преступления несовершеннолетних">
      <column number="13">111</column>
      <column number="14">207</column>
      <column number="15">158</column>
      <column number="16">161</column>
      <column number="17">162</column>
      ....


Есть схема:
Код

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns="http://inquest-reports/xsd/InputFormHeaders.xsd"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:tns="http://inquest-reports/xsd/InputFormHeaders.xsd"
           targetNamespace="http://inquest-reports/xsd/InputFormHeaders.xsd"
           elementFormDefault="qualified" attributeFormDefault="unqualified">

  <xs:element name="InputFormHeaders" type="tns:InputFormHeaders"/>

  <xs:complexType name="InputFormHeaders">
    <xs:all>
      <xs:element name="columns" type="tns:ColumnHeaders">
        <xs:unique name="columnHeadersKey">
          <xs:selector xpath="tns:column|*/tns:column"/>
          <xs:field xpath="@Number"/>
        </xs:unique>
      </xs:element>
      <xs:element name="rows" type="tns:RowHeaders">
        <xs:unique name="rowHeadersKey">
          <xs:selector xpath="tns:row|*/tns:row"/>
          <xs:field xpath="@Number"/>
        </xs:unique>
      </xs:element>
    </xs:all>
    <xs:attribute name="Title" type="xs:string"/>
  </xs:complexType>

  <xs:complexType name="ColumnHeaders">
    <xs:choice maxOccurs="unbounded">
      <xs:element name="group" type="tns:ColumnHeaders"/>
      <xs:element name="column" type="tns:ColumnHeader"/>
    </xs:choice>
    <xs:attribute name="header" type="xs:string"/>
  </xs:complexType>

  <xs:complexType name="RowHeaders">
    <xs:choice maxOccurs="unbounded">
      <xs:element name="group" type="tns:RowHeaders"/>
      <xs:element name="row" type="tns:RowHeader"/>
    </xs:choice>
    <xs:attribute name="header" type="xs:string"/>
  </xs:complexType>

  <xs:complexType name="ColumnHeader">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="readOnly" type="xs:boolean" default="false" />
        <xs:attribute name="agregate" type="tns:listOfIntegers" use="optional" />
        <xs:attribute name="number" type="xs:int" use="required"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="RowHeader">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="readOnly" type="xs:boolean" default="false" />
        <xs:attribute name="agregate" type="tns:listOfIntegers" use="optional" />
        <xs:attribute name="number" type="xs:int" use="required"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name='listOfIntegers'>
    <xs:list itemType='xs:int' />
  </xs:simpleType>
</xs:schema>

и класс сгенеренный по ней
Код

//------------------------------------------------------------------------------
// <auto-generated>
//     Этот код создан программой.
//     Исполняемая версия:2.0.50727.3053
//
//     Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
//     повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------

// 
// This source code was auto-generated by xsd, Version=2.0.50727.1432.
// 
namespace Inquest.Common.Serialization.InputForm {
    using System.Xml.Serialization;
    
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://inquest-reports/xsd/InputFormHeaders.xsd")]
    [System.Xml.Serialization.XmlRootAttribute(Namespace="http://inquest-reports/xsd/InputFormHeaders.xsd", IsNullable=false)]
    public partial class InputFormHeaders {
        
        private ColumnHeaders columnsField;
        
        private RowHeaders rowsField;
        
        private string titleField;
        
        /// <remarks/>
        public ColumnHeaders columns {
            get {
                return this.columnsField;
            }
            set {
                this.columnsField = value;
            }
        }
        
        /// <remarks/>
        public RowHeaders rows {
            get {
                return this.rowsField;
            }
            set {
                this.rowsField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string Title {
            get {
                return this.titleField;
            }
            set {
                this.titleField = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://inquest-reports/xsd/InputFormHeaders.xsd")]
    public partial class ColumnHeaders {
        
        private object[] itemsField;
        
        private string headerField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("column", typeof(ColumnHeader))]
        [System.Xml.Serialization.XmlElementAttribute("group", typeof(ColumnHeaders))]
        public object[] Items {
            get {
                return this.itemsField;
            }
            set {
                this.itemsField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string header {
            get {
                return this.headerField;
            }
            set {
                this.headerField = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://inquest-reports/xsd/InputFormHeaders.xsd")]
    public partial class ColumnHeader {
        
        private bool readOnlyField;
        
        private int[] agregateField;
        
        private int numberField;
        
        private string valueField;
        
        public ColumnHeader() {
            this.readOnlyField = false;
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(false)]
        public bool readOnly {
            get {
                return this.readOnlyField;
            }
            set {
                this.readOnlyField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int[] agregate {
            get {
                return this.agregateField;
            }
            set {
                this.agregateField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int number {
            get {
                return this.numberField;
            }
            set {
                this.numberField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlTextAttribute()]
        public string Value {
            get {
                return this.valueField;
            }
            set {
                this.valueField = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://inquest-reports/xsd/InputFormHeaders.xsd")]
    public partial class RowHeader {
        
        private bool readOnlyField;
        
        private int[] agregateField;
        
        private int numberField;
        
        private string valueField;
        
        public RowHeader() {
            this.readOnlyField = false;
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(false)]
        public bool readOnly {
            get {
                return this.readOnlyField;
            }
            set {
                this.readOnlyField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int[] agregate {
            get {
                return this.agregateField;
            }
            set {
                this.agregateField = value;
            }
        }
        
        public Double Height{get;set;}

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int number {
            get {
                return this.numberField;
            }
            set {
                this.numberField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlTextAttribute()]
        public string Value {
            get {
                return this.valueField;
            }
            set {
                this.valueField = value;
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.1432")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://inquest-reports/xsd/InputFormHeaders.xsd")]
    public partial class RowHeaders {
        
        private object[] itemsField;
        
        private string headerField;
        
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("group", typeof(RowHeaders))]
        [System.Xml.Serialization.XmlElementAttribute("row", typeof(RowHeader))]
        public object[] Items {
            get {
                return this.itemsField;
            }
            set {
                this.itemsField = value;
            }
        }
        
        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string header {
            get {
                return this.headerField;
            }
            set {
                this.headerField = value;
            }
        }
    }
}



Есть дататемплэйт, который из моего XML файла генерит таблицу
Код

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:entities="clr-namespace:IFTest.Entities" 
    xmlns:data="clr-namespace:Inquest.Common.Serialization.InputForm" 
    xmlns:IFTest="clr-namespace:IFTest">

    <Style TargetType="{x:Type TextBox}">
        <Setter Property="BorderThickness" Value="1" />
        <Setter Property="BorderBrush" Value="Black" />
        <Setter Property="TextWrapping" Value="Wrap" />
        <!--<Setter Property="VerticalAlignment" Value="Stretch" />-->
        <!--<Setter Property="HorizontalAlignment" Value="Stretch" />-->
        <Setter Property="IsReadOnly" Value="True" />
        <Setter Property="Background" Value="LightGray" />
    </Style>

    <DataTemplate DataType="{x:Type entities:InputForm}">
        <Grid>
            <Grid.Resources>
                <IFTest:OppositeNumberConverter x:Key="oppositeNumberConverter" />
            </Grid.Resources>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition/>
            </Grid.RowDefinitions>

            <TextBox Grid.Column="0" Grid.Row="0" Text="Показатели" />
            
            <!-- Заголовки колонок -->
            <Border Grid.Column="1" Grid.Row="0" BorderThickness="0,1,1,0" BorderBrush="Black">
                <IFTest:NoWheelScrollViewer x:Name="ScrollAsset" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Hidden">
                    <ItemsControl ItemsSource="{Binding Path=Headers.columns.Items}">
                        <ItemsControl.RenderTransform>
                            <TranslateTransform X="{Binding Path=HorizontalOffset, ElementName=ScrollMain, Mode=OneWay, Converter={StaticResource oppositeNumberConverter}}"/>
                        </ItemsControl.RenderTransform>
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <StackPanel Orientation="Horizontal" />
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>
                    </ItemsControl>
                </IFTest:NoWheelScrollViewer>
            </Border>

            <!-- Заголовки строк -->
            <Border Grid.Column="0" Grid.Row="1" BorderThickness="0,1,1,0" BorderBrush="Black">
                <IFTest:NoWheelScrollViewer x:Name="ScrollRate" VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Disabled">
                    <ItemsControl ItemsSource="{Binding Path=Headers.rows.Items}" Width="325">
                        <ItemsControl.RenderTransform>
                            <TranslateTransform Y="{Binding Path=VerticalOffset, ElementName=ScrollMain, Mode=OneWay, Converter={StaticResource oppositeNumberConverter}}"/>
                        </ItemsControl.RenderTransform>
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <StackPanel Orientation="Vertical" />
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>
                    </ItemsControl>
                </IFTest:NoWheelScrollViewer>
            </Border>

            <!-- Дата грид -->
            <Border Grid.Column="1" Grid.Row="1" BorderThickness="1,1,0,0" BorderBrush="Black">
                <ScrollViewer x:Name="ScrollMain" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
                    <IFTest:InputGrid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" RowHeaders="{Binding Path=Headers.rows, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ColumnHeaders="{Binding Path=Headers.columns, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
                </ScrollViewer>
            </Border>
        </Grid>
    </DataTemplate>

    <DataTemplate DataType="{x:Type data:ColumnHeaders}">
        <DockPanel LastChildFill="True">
            <TextBox DockPanel.Dock="Top" Text="{Binding Path=header}" VerticalContentAlignment="Center" TextAlignment="Center"/>
            <ItemsControl ItemsSource="{Binding Path=Items}">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Horizontal" />
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
            </ItemsControl>
        </DockPanel>
    </DataTemplate>

    <DataTemplate DataType="{x:Type data:RowHeaders}">
        <DockPanel LastChildFill="True">
            <TextBox DockPanel.Dock="Left" Text="{Binding Path=header}" MaxWidth="150"  VerticalContentAlignment="Center" TextAlignment="Left" />
            <ItemsControl ItemsSource="{Binding Path=Items}">
                <ItemsControl.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Vertical"/>
                    </ItemsPanelTemplate>
                </ItemsControl.ItemsPanel>
            </ItemsControl>
        </DockPanel>
    </DataTemplate>

    <DataTemplate DataType="{x:Type data:ColumnHeader}">
        <DockPanel LastChildFill="True" >
            <TextBox Text="{Binding Path=number}" Width="100" TextAlignment="Center" DockPanel.Dock="Bottom"/>
            <TextBox Text="{Binding Path=Value}" Width="100" TextAlignment="Center"/>
        </DockPanel>
    </DataTemplate>

    <DataTemplate DataType="{x:Type data:RowHeader}">
        <DockPanel LastChildFill="True" Height="Auto" VerticalAlignment="Stretch">
            <TextBox Text="{Binding Path=number}" Width="25" MaxWidth="400" DockPanel.Dock="Right" />
            <TextBox Text="{Binding Path=Value}" MaxWidth="400" />
        </DockPanel>
    </DataTemplate>
</ResourceDictionary>


Высоту у TextBox'ов для RowHeader я не знаю, но мне нужно получить его ActualHeight после генерации этого кода)
поэтому я хотел написать нечто вроде 
Код

<TextBox Text="{Binding Path=Value}" MaxWidth="400" ActualHeight="{Binding Path=Height, Mode=OneWayToSource}"/>

т.е. ActualHeight был бы записан в свойство Height класса RowHeader

Тогда бы таблица с данными имела бы одинаковые высоты строк с выстой строк заголовков


Это сообщение отредактировал(а) CYBERDREAM - 1.1.2011, 17:18

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  screen.PNG 30,47 Kb


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
WolfTheGrey
Дата 2.1.2011, 05:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 21.1.2009
Где: forum.vingrad.ru

Репутация: 2
Всего: 2



Чувствую что, что то тут неразрешимое. К счастью я мало книг читал, и мало знаю. 
Могу тебе посоветовать лиш изменить ход событий. чтото подправить, или поменять.

меня смушают несколько факторов:
1{Binding Path=Height, Mode=OneWayToSource} биндинг пустой. Значит идет запрос к DataContext. ково я у тебя не нашел.
2 Mode=OneWayToSource ты запихиваешь параметр во что то... исходя из первой притензии. 
3 в учебниках это называют "Латанием дыр", и решают учителя эти моменты совсем по иному.

Максимум что могу я тебе посоветовать, это ручками (программно) после InitializeComponent(); обработать то, что ты там хочешь поменять.

Добавлено через 4 минуты и 22 секунды
Еще можно использовать класс Converter, из которого обработать передачу данных.
PM MAIL   Вверх
CYBERDREAM
Дата 2.1.2011, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 3
Всего: 28



WolfTheGrey, 
Цитата

1{Binding Path=Height, Mode=OneWayToSource} биндинг пустой. Значит идет запрос к DataContext. ково я у тебя не нашел.
не указывал, думаю это было и так понятно из первого поста коль биндинг пустой.

Цитата

2 Mode=OneWayToSource ты запихиваешь параметр во что то... исходя из первой притензии. 

не понял
Цитата

3 в учебниках это называют "Латанием дыр", и решают учителя эти моменты совсем по иному.
как?

Цитата

Максимум что могу я тебе посоветовать, это ручками (программно) после InitializeComponent(); обработать то, что ты там хочешь поменять.

как ты мог видеть из скриншота, генериться куча текстбоксов, где каждый текстбокс отображает информацию из определенного объекта (Датаконтекст содержит массив RowHeader & ColumnHeader)
так что пока не представляю как в Initialize это сделать.

Чем конвертер может помочь? пока тоже не представляю



--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
WolfTheGrey
Дата 2.1.2011, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 21.1.2009
Где: forum.vingrad.ru

Репутация: 2
Всего: 2



создать свойтсво MyHeigth + реализовать InotifyPropertyChanged
привязать все текстблоки к этому свойству. А после InitializeComponent(); дать команду выравняться. мол дать самую большую велечину.
ну или пусть свойство выберает самое большое число и принимает его, а мелоч отвергает.
PM MAIL   Вверх
CYBERDREAM
Дата 8.1.2011, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 3
Всего: 28



Все текстблоки к одному свойству связывать не надо. Свойство и так создано, зачем предлагать еще одно создавать?
Они и так выравниваются, мне для этого и команду не надо никакую выполнять.
Зачем мне самое большое число? Каждая строка может иметь свою независимую от других высоту. Чуть позже выложу пример, тупик какой то с объяснением


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
Kefir
Дата 9.1.2011, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 22
Всего: 87



CYBERDREAM, я често пытался понять что надо сделать и смотрел на скриншот... наверное вечер и я не смог. Что касается проблемы - тут два варианта:
1) Привязываться из другого места к ActualHeight (потому что ActualHeight вам не забайндить)
2) Подписываться на события а-ля Loaded и там вычислять всё что надо

Дальше проблем не вижу. Хотя повторюсь - возможно не понял вопрос до конца.
PM MAIL WWW Skype   Вверх
CYBERDREAM
Дата 12.1.2011, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 3
Всего: 28



уж простите, коль так плохо получается изъяснить мысль.
что имелось ввиду еще раз в кратце.

(отрывок из шаблона)
Код

<DockPanel LastChildFill="True" Height="Auto" VerticalAlignment="Stretch">
            <TextBox Text="{Binding Path=number}" Width="25" MaxWidth="400" DockPanel.Dock="Right" />
            <TextBox Text="{Binding Path=Value}" MaxWidth="400" />
        </DockPanel>

Для каждого объекта RowHeader создается DockPanel с двумя чилдами (текстбоксами). Мне хотелось чтобы при изменении высоты DockPanel'a менялось свойство объекта RowHeader. (свойство Height). Т.к. Height Auto - биндить его нет смысла, так как оно равно Nan. А ActualHeight нельзя поскольку оно только для чтения

Проблему таки решил, следующим образом. Подписался на событие LayoutUpdated и в нем с помощью рекурсивной функции использующей VisualTreeHelper.GetChilds получил все DockPanel, у которых DataContext is RowHeader и присваивал нужному свойству ActualHeight.

примерно так:
Код

List<DockPanel> list = GetRowDockPanels();
foreach(DockPanel dock in list)
  ((RowHeader)dock.DataContext).Height=dock.ActualHeight;

WolfTheGrey, Kefir спасибо.


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0579 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.