gpt4 book ai didi

wpf - 组合框 selectionchanged 事件触发,甚至无需更改 ComboBox 中的选择

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

你能帮我找到这个错误吗:事件在加载 Windows 窗体之前触发。我开始看到消息框,然后单击确定,然后它加载主屏幕。之后一切正常,我想知道是什么在加载窗口之前触发了 ComboBox SelectionChanged 事件。FillComboBoxFamilyData(SegmentCode) 只是创建了一个数据集并将值放入他的 ComboBox。请参阅此链接以获取完整代码。

Not able to make cascading comboboxes work

任何帮助将不胜感激。谢谢。

 <ComboBox Height="23" HorizontalAlignment="Left" Margin="35,26,0,0" Name="comboBox1" VerticalAlignment="Top" Width="205" ItemsSource="{Binding Source={StaticResource tblSegmentViewSource}}"  DisplayMemberPath="Segment Name" SelectedValuePath="Segment Code" SelectionChanged="comboBox1_SelectionChanged"/>
<ComboBox Margin="304,26,395,93" Name="comboBox2" />


private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{

MessageBox.Show(comboBox1.SelectedValue.ToString());
SegmentCode = Convert.ToInt32(comboBox1.SelectedValue.ToString());
FillComboBoxFamilyData(SegmentCode);

}

最佳答案

在将加载数据(由绑定(bind)附加)的那一刻,将触发 SelectionChanged。因此,如果您的应用程序已准备好并且所有数据都已加载并附加,您必须检查您的事件处理程序。如果不是,则返回事件处理程序而不做任何事情。此行为是设计使然。

ItemsSource="{Binding Source={StaticResource tblSegmentViewSource}}"  

您可以使用 IsLoaded - 要检测的属性,如果绑定(bind)已经被评估。 IsLoaded除非数据绑定(bind)引擎已评估您的 xaml 绑定(bind),否则不会为真。
private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)     { 
if(!IsLoaded){
return;
}
.... your code here

关于wpf - 组合框 selectionchanged 事件触发,甚至无需更改 ComboBox 中的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5022201/

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