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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Silverlight Depenndency property 
:(
    Опции темы
KuMa1104
Дата 29.9.2010, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

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



Silverlight.
Здравствуйте.
Добавил код в контрол
Код

public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }

       //1. Declare the dependency property as static, readonly field in your class.
        public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.Register(
            "MyProperty",                               //Property name
            typeof( string ),                           //Property type
            typeof( TextBox ),             //Type of the dependency property provider
            new PropertyMetadata( MyPropertyChanged ) );//Callback invoked on property value has changes
 
       
 
        //2. Create the property and use the SetValue/GetValue methods of the DependencyObject class
        public string MyProperty
        {
            set
            {
                this.SetValue( MyPropertyProperty, value );
            }
            get
            {
                return ( string )this.GetValue( MyPropertyProperty );
            }
        }
 
        private static void MyPropertyChanged( object sender, DependencyPropertyChangedEventArgs args )
        {
            //Do some processing here...
        }
    }

как его это свойство прицепить в XAML к textBox?
пробовал так
Код

<UserControl x:Class="SilverlightApplication4.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">
    
    <Canvas Height="229" Name="canvas1" Width="333" Background="#FFAA5757">

        <TextBox  Text="{TemplateBinding MyProperty}"  Name="textBox1"  />
    </Canvas>
</UserControl>

но в дизайнере выдается ошибка: Error    1    Property 'MyProperty' was not found in type 

Подскажите, что я забыл. Почему он не находит свойство???




--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
exBlender
Дата 29.9.2010, 06:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.10.2009

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



А ControlTemplate где? "TemplateBinding сам по себе не работает.
--------------------
HTML и CSS забыв как страшный сон, хвалу я заммэлу пою и фирме Майкрософт.
PM MAIL   Вверх
KuMa1104
Дата 29.9.2010, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

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



Цитата(exBlender @  29.9.2010,  06:11 Найти цитируемый пост)
А ControlTemplate где? "TemplateBinding сам по себе не работает.

Ам можете пояснить как я его должен использовать.
Я читал одну статью там про это сказано не было.



--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
exBlender
Дата 30.9.2010, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 2.10.2009

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



"TemplateBinding can only be used within a ControlTemplate definition in XAML":
http://msdn.microsoft.com/en-us/library/cc...v=vs.95%29.aspx

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

        <Style x:Key="LabelStyle1" TargetType="{x:Type Label}">
            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="Padding" Value="5"/>
            <Setter Property="HorizontalContentAlignment" Value="Left"/>
            <Setter Property="VerticalContentAlignment" Value="Top"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Label}">
                        <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
                            <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>


Стиль содержит Template. TemplateBinding отсылает к тем значениям, которые вынесены за Template, это дает возможность манипулировать Values, типа:
<Label Style="{StaticResource LabelStyle1}" Padding="2" Content="Small Padding Lable" />

Если вместо TemplateBinding дать конкретное Value внутри Template, изменить это значение будет уже нельзя. Например, если внутри Template вместо Padding="{TemplateBinding Padding}" поставить Padding="5", во всех Labels этого стиля паддинг всегда будет равен 5, аминь.

p.s. Без Template это - как ситуация в футболе, когда тренер дает четкое указание игроку атаковать по левому флангу и бить в ближний угол, но при этом ни разметки поля, ни ворот нету. Куды ему, бедному, бежать?

Это сообщение отредактировал(а) exBlender - 30.9.2010, 17:45
--------------------
HTML и CSS забыв как страшный сон, хвалу я заммэлу пою и фирме Майкрософт.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




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


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

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