2017-02-22 6 views
1

listBox全体をフォーカス不能にする方法を見つけましたが、lsitbox内に1つの行を非フォーカス可能にする方法があるのでしょうか?これを1行にすることはできません

<ListBox.ItemContainerStyle> 
    <Style TargetType="Control"> 
    <Setter Property="Focusable" Value="False" /> 
    </Style> 
</ListBox.ItemContainerStyle> 

答えて

1

簡単、あなたがMVVMを使用している場合:

<ListBox.ItemContainerStyle> 
    <Style TargetType="Control"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding DontFocusMeBro}" Value="True"> 
       <Setter Property="Focusable" Value="False" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</ListBox.ItemContainerStyle> 

限り、あなたは一致する値から変換することができて、任意の型だけでなく、ブール値の特性とうまくいくことトリガーのValue属性の文字列あなたの項目のプロパティは、アイテムフォーカス可能であるべきとき本当boolであれば、あなたもより簡単にそれを行うことができます。

<ListBox.ItemContainerStyle> 
    <Style TargetType="Control"> 
     <Setter Property="Focusable" Value="{Binding MakeMeFocusable}" /> 
    </Style> 
</ListBox.ItemContainerStyle> 

これはあなたのListBoxはあなたが書いたC#クラスのインスタンスが移入されていることを前提としています。

public class MyListItem : MyViewModelBase 
{ 
    private bool _dontFocusMeBro; 
    public bool DontFocusMeBro { 
     get { return _dontFocusMeBro; } 
     set { 
      if (value != _dontFocusMeBro) { 
       _dontFocusMeBro = value; 
       OnPropertyChanged(); 
      } 
     } 
    } 

    private bool _makeMeFocusable; 
    public bool MakeMeFocusable 
    { 
     get { return _makeMeFocusable; } 
     set 
     { 
      if (value != _makeMeFocusable) 
      { 
       _makeMeFocusable = value; 
       OnPropertyChanged(); 
      } 
     } 
    } 

    // ... other properties ... 
} 

あなたはまだあなたの分離コードのループでListBoxItemインスタンスを追加する文字列か何か、またはより悪いでそれを移入している場合は、コンバータか何かを記述する必要があります。詳細を教えてもらえば、自分のコードでこの作業を行う方法についてはゼロにすることができます。

関連する問題