HandyControl icon indicating copy to clipboard operation
HandyControl copied to clipboard

hc:TabItem的DataTemplate 中数据绑定的Bug

Open Alice-Turing opened this issue 5 months ago • 0 comments

Describe the bug

hc:TabItem的DataTemplate 绑定的数据的表现形式是OneTime,无论Binding的Mode设置成什么值 以下是完整代码 <hc:TabControl.Template> <ControlTemplate TargetType="{x:Type hc:TabControl}"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <StackPanel Grid.Row="0" Orientation="Horizontal"> <hc:TabPanel Margin="0" IsItemsHost="True" /> <Button Width="35" Height="30" VerticalAlignment="Center" Background="Transparent" BorderThickness="0" Click="AddTabButton_Click"> <Button.Content> <Path Width="15" Height="15" Data="{StaticResource AddIcon}" Stretch="Uniform" Stroke="Black" /> </Button.Content> <Button.Style> <Style TargetType="Button"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <Border x:Name="border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> <ContentPresenter x:Name="contentPresenter" Margin="{TemplateBinding Padding}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> </Border> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="border" Property="Background" Value="FloralWhite" /> </Trigger> <Trigger Property="IsPressed" Value="True"> <Setter TargetName="border" Property="Background" Value="White" /> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> </Button.Style> </Button> </StackPanel> <ContentPresenter Grid.Row="1" ContentSource="SelectedContent" /> </Grid> </ControlTemplate> </hc:TabControl.Template> <hc:TabControl.ItemTemplate> <DataTemplate> <TextBox HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Title, Mode=TwoWay}" /> </DataTemplate> </hc:TabControl.ItemTemplate> <hc:TabControl.ContentTemplate> <DataTemplate> <localControl:ExcelConfigControl Margin="10" ConfigData="{Binding}" /> </DataTemplate> </hc:TabControl.ContentTemplate>

Steps to reproduce the bug

<hc:TabControl.ItemTemplate> <DataTemplate> <TextBox HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Title, Mode=TwoWay}" /> </DataTemplate> </hc:TabControl.ItemTemplate> 这段代码 Text的值绑定到Title,无论Mode设置为什么值,这个绑定只生效了一次,后续修改Title的值时Text无法同步变化 且用户在TextBox中输入值时 Title的实际值跟着改变了,但是TextBox的Text依然没有变化,而且输入一次后整个TextBox卡死,无法再次输入

Expected behavior

No response

Screenshots

No response

NuGet package version

None

IDE

No response

Framework type

No response

Windows version

No response

Additional context

No response

Alice-Turing avatar May 10 '25 14:05 Alice-Turing