2017-12-29 2 views
0

コマンドを実行し、テキストボックスの内容をコマンドパラメータとして渡すボタンがあります。ボタンのクリック/コマンド実行プロセスの一環として、テキストボックスをクリアします。 テキストボックスのテキストは、リストビューの選択された項目にバインドされています。したがって、バインドされたプロパティを使用してテキストボックスの内容を操作することはできません。 清算を達成する最良の方法は何ですか?WPFコマンド実行時のTextBoxのクリア

<TextBox x:Name="tbEditOption" 
     Grid.Row="3" 
     Grid.Column="1" 
     Height="25" 
     Background="White" 
     Text="{Binding ElementName=lvOptions, 
         Path=SelectedItem.OptionText}"/> 

、ボタン:

<Button x:Name="btnAdd" 
     Margin="0 5" 
     Width="70" 
     Height="30" 
     Content="Add" 
     Command="{x:Static cmd:CustomCommands.AddOption}"> 
     <Button.CommandParameter> 
      <MultiBinding Converter="{StaticResource MultiParameterConverter}"> 
       <Binding ElementName="cbFilter" Path="SelectedIndex"/> 
       <Binding ElementName="tbEditOption" Path="Text"/> 
      </MultiBinding> 
     </Button.CommandParameter> 
    </Button> 

そして最後に、私のコマンドのためのコード:しかし

public static RoutedUICommand AddOption 
{ 
    get { return _addOption; } 
} 

public static void AddOption_CanExecute(object sender, CanExecuteRoutedEventArgs e) 
{ 
    SetupViewModel vm = ((Control)e.OriginalSource).DataContext as SetupViewModel; 

    var values = (object[])e.Parameter; 

    e.CanExecute = ((int)values[0] >= 0 && !string.IsNullOrEmpty(values[1].ToString())); 
} 

public static void AddOption_Executed(object sender, ExecutedRoutedEventArgs e) 
{ 
    SetupViewModel vm = ((Control)e.OriginalSource).DataContext as SetupViewModel; 
    vm.AddOption(e.Parameter); 
} 
+4

テキストボックスにバインドされている項目を消去することができます。それをやりたくない場合は、その変数にデータをバインドしないでください。 –

+1

テキストボックスがリストビューの選択された項目にバインドされている場合は、リストビューの選択項目をnoneに設定する必要があります。または、テキストボックスを直接リストビューにバインドしないでください。 –

+0

テキストボックスにマルチコンバータと余分なブール値プロパティを使用して、他のものにバインドします。または、余分な文字列プロパティにバインドします。 – Bijan

答えて

0

this.tbEditOption.Text = String.empty;

ここ

は、テキストボックスのためのXAMLです オブジェクトは必ずしも ビューモデルでアクセス可能なわけではありません。

また、ソースを変更しているため、バインドが解除されます。

+0

ビューオブジェクトは、ビューモデルで必ずアクセスできません。また、これはバインディングを壊すでしょう – Bijan

0

TextSelectedItem.OptionTextにバインドされているので、リストビュー(SelectedItem = null)から選択した項目を選択解除すると、Textが空になります。

しかし、これは副作用を伴う可能性があります。