绑定到另一个控件时 ControlTemplate DataTrigger 不更新
ControlTemplate DataTrigger not Updating when Bound to Another Control
我一直在创建一个自定义控件,它在数据网格之上包含一个组面板。
我有一个水印文本块,当我通过代码隐藏将 children 添加到 PART_GroupPanel 后,它应该会折叠。
以下代码是我将在整个应用程序中多次使用的 ControlTemplate 的一部分。
<!--Watermark Textblock-->
<TextBlock Text="Drag & Drop Column to Group." Foreground="{DynamicResource FirstThemeBrush}" FontFamily="Calibri" Margin="8,0,0,0" VerticalAlignment="Center">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=PART_GroupPanel, Path=Children.Count}" Value="0">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<!--Panel-->
<StackPanel x:Name="PART_GroupPanel" Margin="0,1,0,2" Orientation="Horizontal">
<StackPanel.Resources>
<Style TargetType="Button" BasedOn="{StaticResource RoundedButtonStyle}">
<Setter Property="Padding" Value="15,5"/>
<Setter Property="Margin" Value="0,0,0,0"/>
</Style>
<Style TargetType="Path">
<Setter Property="Width" Value="5"/>
<Setter Property="Height" Value="8"/>
<Setter Property="Margin" Value="5,0"/>
<Setter Property="Fill" Value="{DynamicResource FirstThemeBrush}"/>
<Setter Property="Stretch" Value="Fill"/>
<Setter Property="Data" Value="M 0 6 L 2 0 L 25 25 L 2 50 L 0 42 L 16 25 L 0 6 Z"/>
</Style>
</StackPanel.Resources>
</StackPanel>
通过代码隐藏添加项目后,DataTrigger 不会更新和折叠文本块。
感谢任何帮助。
要解决此问题,请改用 ItemsControl
。它的功能本质上类似于 StackPanel
,因为它使用 StackPanel
作为其布局。
<TextBlock
Margin="8,0,0,0"
VerticalAlignment="Center"
FontFamily="Calibri"
Foreground="{DynamicResource FirstThemeBrush}"
Text="Drag & Drop Column to Group.">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=PART_GroupPanel, Path=Items.Count}" Value="0">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<ItemsControl x:Name="PART_GroupPanel"
Margin="0,1,0,2">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
我一直在创建一个自定义控件,它在数据网格之上包含一个组面板。
我有一个水印文本块,当我通过代码隐藏将 children 添加到 PART_GroupPanel 后,它应该会折叠。
以下代码是我将在整个应用程序中多次使用的 ControlTemplate 的一部分。
<!--Watermark Textblock-->
<TextBlock Text="Drag & Drop Column to Group." Foreground="{DynamicResource FirstThemeBrush}" FontFamily="Calibri" Margin="8,0,0,0" VerticalAlignment="Center">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=PART_GroupPanel, Path=Children.Count}" Value="0">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<!--Panel-->
<StackPanel x:Name="PART_GroupPanel" Margin="0,1,0,2" Orientation="Horizontal">
<StackPanel.Resources>
<Style TargetType="Button" BasedOn="{StaticResource RoundedButtonStyle}">
<Setter Property="Padding" Value="15,5"/>
<Setter Property="Margin" Value="0,0,0,0"/>
</Style>
<Style TargetType="Path">
<Setter Property="Width" Value="5"/>
<Setter Property="Height" Value="8"/>
<Setter Property="Margin" Value="5,0"/>
<Setter Property="Fill" Value="{DynamicResource FirstThemeBrush}"/>
<Setter Property="Stretch" Value="Fill"/>
<Setter Property="Data" Value="M 0 6 L 2 0 L 25 25 L 2 50 L 0 42 L 16 25 L 0 6 Z"/>
</Style>
</StackPanel.Resources>
</StackPanel>
通过代码隐藏添加项目后,DataTrigger 不会更新和折叠文本块。
感谢任何帮助。
要解决此问题,请改用 ItemsControl
。它的功能本质上类似于 StackPanel
,因为它使用 StackPanel
作为其布局。
<TextBlock
Margin="8,0,0,0"
VerticalAlignment="Center"
FontFamily="Calibri"
Foreground="{DynamicResource FirstThemeBrush}"
Text="Drag & Drop Column to Group.">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=PART_GroupPanel, Path=Items.Count}" Value="0">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<ItemsControl x:Name="PART_GroupPanel"
Margin="0,1,0,2">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>