powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Можно ли в стиле устанавливать свойство внутреннего объекта?
10 сообщений из 10, страница 1 из 1
Можно ли в стиле устанавливать свойство внутреннего объекта?
    #37643374
Добрый день!

Есть стиль хранящийся в ресурсах и рисующий кнопку с изображением

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<Style x:Key="BtnWithImageStyle" TargetType="Button" >
        <Setter Property="ContentTemplate" >
            <Setter.Value>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" FlowDirection="LeftToRight">                        
                        <Image Source="/Test.app;component/Images/Image.png" Width="18" Height="17" Stretch="Fill" />
                        <ContentPresenter Content="{Binding}"/>
                    </StackPanel>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>



Его использование

Код: xml
1.
<Button x:Name="OKButton" Style="{StaticResource BtnWithImageStyle}" Content="Текcт на кнопке"/>



Текст кнопки мы можем задать, хотелось бы, чтобы еще можно было бы передать адрес изображения.
Что то типа:

Код: xml
1.
2.
<Button x:Name="OKButton" Style="{StaticResource BtnWithImageStyle}" Content="Текcт на кнопке"
  ImageSource="/Test.app;component/Images/Image.png"/>



Есть ли способ сделать это без создания наследника класса Button?
...
Рейтинг: 0 / 0
Можно ли в стиле устанавливать свойство внутреннего объекта?
    #37643797
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и сделайте вьюмодельку + DataTemplate типа:
Код: c#
1.
2.
3.
4.
5.
class ImageHeader
{
    public ImageSource Image { get; set; }
    public string Text { get; set; }
}



И вставляйте "это" в content кнопки. Можно и через стиль:
Код: c#
1.
2.
3.
4.
5.
6.
7.
<Style x:Key="BtnWithImageStyle" TargetType="Button" >
    <Setter Property="Content">
        <Setter.Value>
            <my:ImageHeader Image="MyImage.png" Text="Bla..."/>
        </Setter.Value>
    </Setter>
</Style>
...
Рейтинг: 0 / 0
Можно ли в стиле устанавливать свойство внутреннего объекта?
    #37644248
Не получается :(
Делаю так

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<Style x:Key="ImageBtnStyle" TargetType="Button" >
        <Setter Property="ContentTemplate" >
            <Setter.Value>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" FlowDirection="LeftToRight">
                        <Image Source="{Binding Path=Image}" Width="18" Height="17" Stretch="Fill" />
                        <ContentPresenter Content="{Binding Path=Text}"/>
                    </StackPanel>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>



Код кнопки
Код: xml
1.
2.
3.
<Button Style="ImageBtnStyle">                                                
   <util:ImageHeader Image="MyImage.png" Text="Bla..."/>
</Button>



В чем ошибка?
...
Рейтинг: 0 / 0
Можно ли в стиле устанавливать свойство внутреннего объекта?
    #37644353
При открытии формы пишет что не обнаружено подходящего конструктора для типа ImageHeader.

Сам класс объявлен так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 class ImageHeader
    {
        public ImageSource Image { get; set; }
        public string Text { get; set; }
        public ImageHeader()
        {
            Image = null;
            Text = "aaa";
        }
        public ImageHeader(ImageSource Image, string Text)
        {
            this.Image = Image;
            this.Text = Text;
        }
    }
...
Рейтинг: 0 / 0
Можно ли в стиле устанавливать свойство внутреннего объекта?
    #37645084
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
public class

ЗЫ: Это же силверлайт, тут всё через ж@пу.
...
Рейтинг: 0 / 0
Можно ли в стиле устанавливать свойство внутреннего объекта?
    #37645093
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлять изображение нужно через attached property, а не через одно место. Совершенно такой же результат был бы и в wpf
тынц
...
Рейтинг: 0 / 0
Можно ли в стиле устанавливать свойство внутреннего объекта?
    #37645117
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaДобавлять изображение нужно можно через attached property.Поправил.
SeVaСовершенно такой же результат был бы и в wpfНет. WPF позволяет вставлять в XAML интернал/приватные классы.
...
Рейтинг: 0 / 0
Можно ли в стиле устанавливать свойство внутреннего объекта?
    #37645131
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К WPF позволяет вставлять в XAML интернал/приватные классы.
Пример такого чуда
...
Рейтинг: 0 / 0
Можно ли в стиле устанавливать свойство внутреннего объекта?
    #37645143
SeVa Спасибо за ссылку.
Интересно было бы попытаться усовершенствовать предложенный в статье механизм, чтобы через attached property можно было задавать любые свойства вложенных контролов.

Attached property будет выглядеть примерно так:

Код: xml
1.
2.
3.
4.
5.
6.
<my:InnerBinding>
      <my:Bindings>
             <my:Bind TargetName="InnerControlName1" TargetProperty="PropertyName1" Value="Value1" />
             <my:Bind TargetName="InnerControlName2" TargetProperty="PropertyName2" Value="Value2" /> 
     </my:Bindings>
</my:InnerBinding>



Насколько сложно реализовать подобное?
...
Рейтинг: 0 / 0
Можно ли в стиле устанавливать свойство внутреннего объекта?
    #37645307
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaАлексей К WPF позволяет вставлять в XAML интернал/приватные классы.
Пример такого чудаЕсли XAML и internal-класс находятся в одной сборке - без проблем, сам проверь. Silverlight такого не позволяет.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Можно ли в стиле устанавливать свойство внутреннего объекта?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]