我有一个itemscontrol
绑定到一组对象。
在数据模板中,我绑定了一个动作,如果它们的焦点丢失,它将被创建的所有控件使用。
在控件中,有一个文本框,所以如果项目控件ItemSource中有1个项目,则会有2个文本框。
现在,如果Textbox 1有焦点并且我单击文本框2之外的某处,则执行一次操作(因为焦点丢失)。但是,如果我在文本框2中单击,则该操作将执行两次。为什么呢?
<ItemsControl Grid.Row="1" Margin="0,5,0,5" ItemsSource="{Binding
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type Window}}, Path=Collection}">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type ct:CollectionItem}">
<cc:TestControl
ValueChangedAction="{Binding
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type Window}}, Path=ValueChangedAction}"
VerticalAlignment="Center" HorizontalAlignment="Center" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
这是控制。
<ewt:DecimalUpDown Tag="{Binding Uid}" Grid.Row="0" Grid.Column="3"
HorizontalAlignment="Stretch" TextAlignment="Left" Margin="10,5,10,5"
FormatString="C2" ShowButtonSpinner="False" VerticalAlignment="Center"
Value="{Binding Value}" LostFocus="DecimalUpDown_LostFocus" />
绑定操作在此事件处理程序中执行。
答案 0 :(得分:0)
如果您的操作应该更新绑定源(例如Window,它看起来与您的示例相似),您可能想尝试将OneWayToSource
添加到Binding中,以便绑定仅以一种方式发生 - 从文本框到它绑定的任何内容。