示例
以下为简单示例,下拉选项中的内容在ComboBox.ItemTemplate中使用TextBlock定义,TextBlock中点击会产生点击事件,进行相关逻辑处理,但是直接绑定事件会报错,需要将资源指向父级才能正常绑定到相关事件中。
ComboBox 控件
<ComboBox x:Name="StandardAlterBox" SelectedIndex="{Binding StandardAlterIndex}" ItemsSource="{Binding StandardGroup}" IsReadOnly="False" IsEditable="True" Height="30" Width="220" FontSize="{DynamicResource DefaultFontSize}" >
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock x:Name="TextBox" Text="{Binding}" cal:Action.TargetWithoutContext="{Binding DataContext, RelativeSource={RelativeSource AncestorType=ComboBox}}"
cal:Message.Attach="[Event MouseLeftButtonUp]=[Action StandardAlter(TextBox.Text)]"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
通过此语句将子控件指向父控件,其中AncestorType=???根据父级控件决定
cal:Action.TargetWithoutContext="{Binding DataContext, RelativeSource={RelativeSource AncestorType=ComboBox}}"