私は最初の項目だけを太字にしたいというListBoxを持っています。ListBoxで最初の項目を太字にするにはどうすればいいですか?
ビュー:
<ListBox x:Name="lstBox" ItemsSource="{Binding List}" DisplayMemberPath="{Binding SequencesDisplayLanguage}" />
のViewModel:
private ObservableCollection<Sequence> _list = new ObservableCollection<Sequence>() { };
public ObservableCollection<Sequence> List { get { return _list; } }
private string _sequencesDisplayLanguage = "NameEnglish";
public string SequencesDisplayLanguage
{
get
{
return _sequencesDisplayLanguage;
}
set
{
_sequencesDisplayLanguage = value;
OnPropertyChanged("SequencesDisplayLanguage");
}
}
モデル:
public class Sequence : INotifyPropertyChanged
{
public Sequence()
{
NameEnglish = "";
NameRomanian = "";
}
private string _nameEnglish;
public string NameEnglish
{
get
{
return _nameEnglish;
}
set
{
_nameEnglish = value;
OnPropertyChanged("NameEnglish");
}
}
private string _nameRomanian;
public string NameRomanian
{
get
{
return _nameRomanian;
}
set
{
_nameRomanian = value;
OnPropertyChanged("NameRomanian");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
私は項目がである場合FontWeights.Bold
を返しコンバータと、ItemTemplateにを使用して試してみました特定のタイプ(私はその特定のアイテムを最初にリストに入れて、 d)。コードはこれです:
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock FontWeight="{Binding Converter={StaticResource sequenceToFontWeightConverter}}"
Text="{Binding Path=NameEnglish}" />
</DataTemplate>
</ListBox.ItemTemplate>
が、私は、実行時に(NameEnglish
またはNameRomanian
)をテキスト結合パスを変更できるようにする必要があります。
Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Grid}}, Path=DataContext.SequencesDisplayLanguage}"/>
をけど(SequencesDisplayLanguage=="NameEnglish"
は、すべてのListBoxの項目が「NameEnglish」と表示されている場合)、それは動作しません。だから私はViewModelににプロパティを参照しようとしました。
だから、リストボックスの最初の項目だけを太字にして、実行時にバインディングパスを変更することはできますか?
UPDATE
Iはクレメンスソリューションを試みたが、現在選択された項目の強調表示が変更されました:アイテムが大きい高さを有し、境界線と異なる色で矩形が選択する場合(画像を参照)が表示されます。
にはどうすれば元のアイテムのサイズとハイライトを保つことができますか?
UPDATE見つけた2
:
<Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
すばらしい回避策をありがとう。ただし、選択した項目の強調表示が変更されています(更新された回答を参照)。元の行動を維持する方法を知っていますか? –
見つかった: '