Я пытаюсь привязать данные к ярлыку и изменить его цвет и текст в ответ на значение свойства bound. Я использую ControlTemplate для изменения цвета и текста, потому что изменение содержимого метки в ответ на DataTriggers не сработало (текст так и не появился).Не удается получить доступ к текстовому свойству TextBlock в ControlTemplate
Таким образом, использование ControlTemplate работает при определении его встроенного в Label, но, похоже, не работает при определении шаблона в качестве ресурса.
Код, приведенный ниже, является более простым примером для демонстрации проблемы.
Это то, что я до сих пор:
<ResourceDictionary>
<ControlTemplate x:Key="baseTemplate" TargetType="{x:Type Label}">
<Grid Background="{TemplateBinding Background}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="24"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="24"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="InnerTextBlock" Grid.Column="1"
Text="{TemplateBinding Label.Content}" <!-- An attempt to tie the Text here to the Label's Content property -->
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Padding="{TemplateBinding Padding}"
Background="{TemplateBinding Background}"
Foreground="{TemplateBinding Foreground}"
Width="{TemplateBinding Width}"
Height="{TemplateBinding Height}"
/>
</Grid>
</ControlTemplate>
<Style x:Key="availableLabelStyle" TargetType="{x:Type Label}">
<Setter Property="Background" Value="#FF567E4A"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="Content" Value="Available"/>
<Setter Property="Template" Value="{StaticResource baseTemplate}"/>
</Style>
</ResourceDictionary>
<Label x:Name="StatusLabel"
Style="{StaticResource availableLabelStyle}"
Grid.Column="1"
HorizontalAlignment="Left"
Margin="111,71,0,0"
VerticalAlignment="Top" Width="124"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Height="18"
Padding="2"
/>
Проблема заключается в том, что содержание недвижимости в сеттер для «availableLabelStyle», кажется, не работает. Текст не отображается, если этот стиль применяется к ярлыку.
Есть ли лучший способ сделать то же самое здесь И получить текст, чтобы он появился в ярлыке?
Заранее благодарим за помощь.
Я просто попробовал это в пустом проекте Blend (скопировал ControlTemplate/Style в Window.Resources и добавил ярлык в сетку), и он отлично работал. Ярлык появился зеленым. Белый текст. «Доступно» на этикетке. – Tim
@Tim Спасибо. Что-то еще должно мешать в окне, которое я разрабатываю. Я должен был проверить это в тестовом проекте, прежде чем задавать этот вопрос здесь. – sorton9999