Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Как из определения стиля получить элемент,


Автор: L0tR 4.5.2010, 13:11
Есть класс VisualItem - наследник ContentControl.
Для этого класса в XAML определён стиль. В стиле опрпделяются различные параметры, которые хочется сделать настраиваемыми (MinHeight, MinWidth, цвета и размеры различных элементов). Насколько я понимаю, можно в классе VisualItem завести поля (возможно, и свойства), хранящие значения, которые я хочу изменять; и сделать в определении стиля привязку данных к этим полям. Вопрос в том, как в определении стиля получить элемент, которому он назначается, ведь эти поля должны быть разными у каждого экземпляра VisualItem.
Чтобы не быть голословным, приведу кусок кода. Допустим, я хочу сделать привязку для свойства minHeight (уже присутствует в ContentControl).
Определение VisualItem:
Код

public class VisualItem:ContentControl
    {
        int minHeight = 30;

        public int MinH
        {
            get { return minHeight; }
            set { minHeight = value; }
        }

        public VisualItem()
        {
            Style = (Style)FindResource("VisualItemStyle");
        }
}


Часть определения стиля VisualItem:

 <Style x:Key="VisualItemStyle" TargetType="ns:VisualItem">
        <Setter Property="MinHeight" Value="{???}"/>
        <Setter Property="MinWidth" Value="20"/>
</Style>

Что мне нужно написать, чтобы сделать привязку свойства MinHeight к полю minHeight объекта? Про Binding читал кое-что, но очень плохо понимаю, как с ним работать.

Автор: L0tR 4.5.2010, 14:39
Кстати говоря, понятное дело, что привязать MinHeight можно и без привязки, просто поменяв сеттер в классе, но такое не предлагать, фишка в том, что многие другие свойства из класса недоступны.

Автор: Partizan 11.5.2010, 14:01
L0tR, 

Код

public class VisualItem:ContentControl
    {
        int minHeight = 30;

        public VisualItem()
        {
             this.MinHeight = minHeight;
            Style = (Style)FindResource("VisualItemStyle");
        }
}


Цитата

многие другие свойства из класса недоступны


например?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)