gpt4 book ai didi

wpf - 双向绑定(bind)和 TabControl 的奇怪行为

转载 作者:行者123 更新时间:2023-12-04 04:45:54 25 4
gpt4 key购买 nike

在我的应用程序中,我有以下 TabControl:

<TabControl ItemsSource="{Binding MyItemsSource}"
ContentTemplate="{StaticResource ResourceKey=MyContentTemplate}"
IsSynchronizedWithCurrentItem="True" />

这是使用的 ContentTemplate:
<DataTemplate x:Key="MyContentTemplate">
<Canvas>
<TextBox Text="{Binding Path=MyFirstText, Mode=TwoWay}" />
<TextBox Text="{Binding Path=MySecondText, Mode=TwoWay}" />
</Canvas>
</DataTemplate>

和 ItemsSource:
public ObservableCollection<MyData> MyItemsSource { get; set; }

public class MyData
{
public string MyFirstText { get; set; }
public string MySecondText { get; set; }
}

请考虑这种情况:
  • 选择第一个标签
  • 在第一个文本框中输入一些文本
  • 选择第二个标签
  • 选择第一个选项卡:在第一个选项卡的TextBox中输入的文本消失了(因为没有应用绑定(bind))

  • 另一种情况:
  • 选择第一个标签
  • 在第一个文本框中输入一些文本
  • 选择第二个文本框(或除更改选项卡之外的任何更改焦点)
  • 选择第二个标签
  • 选择第一个选项卡:输入的文本仍然显示(因为应用了绑定(bind))

  • 这是正常行为吗?还是我做错了什么?谢谢你。

    最佳答案

    这是因为 TextBox 的更新触发器默认设置为 LostFocus。将其更改为 PropertyChanged,它应该可以工作:

    <TextBox Text="{Binding Path=MyFirstText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

    更新源触发器: http://msdn.microsoft.com/en-us/library/system.windows.data.updatesourcetrigger.aspx

    关于wpf - 双向绑定(bind)和 TabControl 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18186954/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com