容易,如果你使用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
情況下,在你的代碼隱藏循環填充它,你必須寫一個轉換器什麼的。如果你給了我更多的細節,我可以讓你瞭解如何使用你自己的代碼進行這項工作。