Изображение и текст метки стиля - PullRequest
0 голосов
/ 02 сентября 2011

это вопрос из двух частей, который, вероятно, имеет аналогичный ответ.

Я хочу создать в словаре ресурсов стиль для метки, содержащей сначала изображение, а затем текст.Текст, как TextBlock, имеет свой собственный стиль (там проблем не было).Вот что у меня есть

Стиль метки:

<Style x:Key="LabelStyle" TargetType="Label">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Label">
                <TextBlock Style="{StaticResource TextBlockStyle}">
                </TextBlock>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

TextBlockStyle:

<Style x:Key="TextBlockStyle" TargetType="{x:Type TextBlock}">
    <Setter Property="Margin" Value="25 0 0 2.5"/>
    <Setter Property="Width" Value="Auto"/>
    <Setter Property="HorizontalAlignment" Value="Left"/>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="TextDecorations" Value="Underline"/>
            <Setter Property="Foreground" Value="Blue"/>
            <Setter Property="Cursor" Value="Hand"/>
        </Trigger>
    </Style.Triggers>
</Style>

Теперь моя проблема заключается в добавлении новой метки в мой элемент управления (например:Окно) и укажите текст (например, Create), текст не отображается. Что-то вроде:

<Label Style="{StaticResource LabelStyle}">Create</Label>

Текст Create не отображается, однако, если я добавлю свой LabelStyle-> TextBlock-> text, то егопоказывает, но это не хорошо, так как я хочу изменить его для разных лейблов.Есть ли способ привязать мой текст Label к моему TextBlock.Text (Inside Style) ???

Мой другой вопрос такой же, но для изображений и Image.Source.

Спасибо: -)

РЕДАКТИРОВАТЬ:

Это то, что у меня сейчас с HB ответ реализован

    <Style x:Key="LabelStyle" TargetType="Label">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Label">
                <Grid>
                    <StackPanel Orientation="Horizontal">
                        <Image Source="/Resources/Create.png" />
                        <TextBlock Style="{StaticResource TextBlockStyle}" Text="{TemplateBinding Content}"/>
                    </StackPanel>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Обратите внимание, что это в словаре ресурсов.Для TextBlock это прекрасно работает.Но для изображения это другая история.Я хочу то же самое, что и 'Text = "{TemplateBinding Content}', но для Image.Source и установить его путь в моем элементе управления при добавлении метки. Вероятно, так как это многократный контент, мне придется написать больше кода, чем я"Хотелось бы, но я соглашусь на самый простой и чистый ответ.

Еще раз спасибо, а что касается гиперссылки, она все еще находится в разработке, в любом случае она не будет гиперссылкой, просто какое-то пользовательское менюкнопка с анимацией, так что пользователю не так скучно: P

1 Ответ

1 голос
/ 02 сентября 2011

Ваш Label.Template больше не связывает свойство Content Label (которое вы установили на "Create") с любой внутренней частью.Чтобы это исправить, вы можете, например, связать TextBlock.Text следующим образом:

<ControlTemplate TargetType="Label">
    <TextBlock Style="{StaticResource TextBlockStyle}"
               Text="{TemplateBinding Content}"/>
</ControlTemplate>

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

...