5

3 つのオブジェクト、2 つのリスト、およびテキスト ボックスを含むタブ コントロールがあります。テキストボックスは双方向にバインドされています:

<TabControl x:Name="tcTabs" ItemsSource="{Binding Rooms, UpdateSourceTrigger=PropertyChanged}" Margin="5" BorderThickness="1" IsSynchronizedWithCurrentItem="True">
    <TabControl.ItemContainerStyle>
        <Style TargetType="TabItem">
            <Setter Property="Header" Value="{Binding Name}" />
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="Auto"/>
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="*"/>
                                <RowDefinition Height="22"/>
                            </Grid.RowDefinitions>

                            <ListBox ItemsSource="{Binding ReceivedMessages}" DisplayMemberPath="Raw" Grid.Row="0" Grid.Column="0" BorderThickness="0" />
                            <ListBox ItemsSource="{Binding Users}" DisplayMemberPath="Nick" Visibility="{Binding Type, Converter={StaticResource UserListVisibilityConverter}}" Grid.Row="0" Grid.Column="1" BorderThickness="1,0,0,0" BorderBrush="#FFBBBBBB" Width="130" />
                            <TextBox Text="{Binding CurrentInput, Mode="TwoWay"}" Grid.Row="1" Grid.ColumnSpan="2" BorderThickness="0,1,0,0" BorderBrush="#FFBBBBBB" Height="22" />
                        </Grid>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </TabControl.ItemContainerStyle>
</TabControl>

バッキング オブジェクト :

public string CurrentInput
{
    get
    {
        return _currentInput;
    }
    set
    {
        if (value != _currentInput)
        {
            _currentInput = value;
            OnPropertyChanged();
        }
    }
}

問題は、テキストを変更して別のタブをクリックしても、バッキング フィールドが更新されない (セッターにヒットさえしない) ことですが、変更してからリストボックスをクリックすると...

この奇妙な動作の理由は何ですか?

4

2 に答える 2

0

を使用してデータバインディングエンジンを手動でトリガーすることにより、この問題(双方向バインディング)を解決しました

DataContext = this;
于 2016-07-20T03:25:40.903 に答える