1

我有一个itemscontrol绑定到对象集合的对象。

在数据模板中,我绑定了一个操作,如果它们的焦点丢失,所有创建的控件都将使用该操作。

在控件中,有一个文本框,因此如果项目控件 ItemSource 中有 1 个项目,则将有 2 个文本框。

现在,如果文本框 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" />

绑定的操作在此事件处理程序中执行。

4

1 回答 1

0

如果您的操作应该更新绑定的源(例如,窗口,它看起来像您的示例),您可能想尝试添加OneWayToSource到您的绑定,以便绑定仅以一种方式发生 - 从文本框到绑定到的任何内容.

于 2013-08-30T12:59:45.630 回答