6

クライアントがテキストを入力してリストから選択できるようにしたいので、AutocompleteBoxのSelectedTextとプロパティの両方をバインドしたいと考えています。SelectedItem正常に動作していますが...

MainPage には 1 つの DataGrid があります。グリッド (つまり、SelectedItem) からレコードを選択するときに、ポップアップ ウィンドウの AutocompleteBox に設定したいと考えています。機能する場合もありますが、機能しない場合もあります。

この問題についてはどうすればよいですか?

これは私のXAMLです:

<Sdk:AutoCompleteBox Grid.Column="3" Grid.Row="3" Height="18" Width="150" 
     IsTextCompletionEnabled="True" TabIndex="9" HorizontalAlignment="Left"

     Text="{Binding ElementName=ResEdit,Path=DataContext.SelectedDemoText,Mode=TwoWay}"
     ItemsSource="{Binding ElementName=ResEdit,Path=DataContext.DemoList,Mode=OneWay}"
     ItemTemplate="{StaticResource DemoTemplate}"
     ValueMemberPath="DemoCode" 
     LostFocus="AutoCompleteBox_LostFocus"
     Margin="0,0,21,0" Padding="0">
  </Sdk:AutoCompleteBox>

このプロパティはビューモデルにあり、DataGrid にバインドされています。

public InvoicesDTO SelectedInvoice
{
    get { return _selectedInvoice; }
    set
    {
        SelectedInvoice = value;
        SelectedDomoText = SelectedInvoice.DemoText.Trim();
        RaisePropertyChanged("SelectedInvoice");
    }
}
4

1 に答える 1

3

関数SelectedTextSelectedItemの両方をautocompleteで使用しないでください。これはAutoCompleteBoxのバグです..... より良い方法は、GotFocus と LossFocus でテキスト ボックスAutoCompleteBoxの可視性を設定することです。このようにして、あなたは挑戦的にあなたの問題を解決します

 private void DemoAutoComplete_LostFocus(object sender, RoutedEventArgs e)
            {
                DemoTextBox.Visibility = Visibility.Visible;
                DemoAutoComplete.Visibility = Visibility.Collapsed;
                DemoTextBox.Text = OCRAutoComplete.Text;

                ((DemoVM)this.DataContext).SelectedDemoText = DemoAutoComplete.Text;
            }



private void DemoTextBox_GotFocus(object sender, RoutedEventArgs e)
    {
        DemoAutoComplete.Text = OctTextBox.Text;
        DemoTextBox.Visibility = Visibility.Collapsed;
        DemoAutoComplete.Visibility = Visibility.Visible;
        DemoAutoComplete.Focus();
    }
于 2013-02-04T06:03:26.457 に答える