【发布时间】:2014-09-14 08:46:10
【问题描述】:
我有一些ComboBox 控件,每个控件都有一些值。每个选定的值都会触发我的一个事件。
当从 ComboBoxA 中选择项目时,我的事件将使用所选项目的值触发。
当我的一个组合框刚刚打开和关闭时,其中没有更改任何值,则不会触发事件(这是组合框的默认行为)。
但这不是我需要的。
我所做的是创建一个与DropDownClosed 事件相关联的行为,但我不知道如何触发SelectionChanged 事件。
编辑:
这个问题可以概括: 如何“手动”触发 UI 控件的事件? 或者 - 有没有办法调用与事件相关的方法?
编辑 2:
我会尝试更清楚地解释问题。我有这段代码,它接受一个项目列表,并将它们显示为类别(单选按钮)和类别下的项目(单选按钮内的组合框)。 选择项目时 - 触发选择更改事件。好的! 选择另一个单选按钮时 - 触发事件。好的!!
不工作的特殊情况(作为 ComboBox 行为的默认设置):当打开未选择的组合之一并且在不更改其选择的情况下关闭它时 - 不会触发任何事件。但是 - 这个组合在我现在想要选择的未选择类别下,因为用户已经选择了它。我的想法是使用行为(在 xaml 代码中,但到目前为止还没有工作......)
代码(或多或少...):
<ListBox ItemsSource="{Binding Categories}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<RadioButton Content="{Binding CategotyName}" GroupName="TestCategory" IsChecked="{Binding IsSelected}"
cal:Message.Attach="SelectionChanged($dataContext)]"/>
<ComboBox cal:Message.Attach="SelectionChanged($dataContext)]"
ItemsSource="{Binding TestsNamesUnderCategory}" SelectedIndex="{Binding SelectedTestInx, Mode=TwoWay}">
<i:Interaction.Behaviors>
<local:ComboBoxReSelectionBehavior />
</i:Interaction.Behaviors>
</ComboBox>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
cal:Message.Attach="SelectionChanged($dataContext)]" 行正在使用 Caliburn 框架,它只是将触发器发送到我的方法。
希望现在更清楚了。谢谢!
【问题讨论】: