我试图在我的中设置一个触发器,DataTemplate
以便当源对象的属性HasUnreadMessages
设置为 true 时,标题文本变为红色。但是从数据模板中的触发器内部,我不知道如何引用TextBlock
标头的。
完整代码:
<Window x:Class="IRC.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:loc="clr-namespace:IRC"
Title="" Height="350" Width="525">
<Window.Resources>
<DataTemplate DataType="{x:Type loc:Tab}">
<DockPanel>
<ListBox x:Name="lstUsers" ItemsSource="{Binding Users}" Visibility="Collapsed" DockPanel.Dock="Right" />
<ListBox x:Name="lstMessage" ItemsSource="{Binding Messages}" />
</DockPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Type}" Value="Channel">
<Setter TargetName="lstUsers" Property="Visibility" Value="Visible" />
</DataTrigger>
<DataTrigger Binding="{Binding HasUnreadMessages}" Value="True">
<Setter TargetName="tabHeader" Property="Foreground" Value="Red" /> // -- ERROR
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Window.Resources>
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="_Actions">
<MenuItem Header="_Connect" InputGestureText="Alt+C" Click="Connect" />
</MenuItem>
</Menu>
<TextBox Name="txtInput" Height="22" VerticalContentAlignment="Center" SpellCheck.IsEnabled="True" DockPanel.Dock="Bottom" />
<TabControl Name="pnlTabs" ItemsSource="{Binding}" ContentTemplate="{Binding}" DockPanel.Dock="Top">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock x:Name="tabHeader" Text="{Binding Name}"/>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
</DockPanel>
</Window>
错误 :
The name "tabHeader" is not recognized.
The member "Foreground" is not recognized or is not accessible.
标签 :
public class Tab
{
public string Name { get; set; }
public string Type { get; set; }
public ObservableCollection<string> Users { get; set; }
public ObservableCollection<string> Messages { get; set; }
public bool HasUnreadMessages { get; set; }
}