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