ComboBoxから派生したWPF CustomControlがあり、項目の表示をカスタマイズする方法を理解しようとしています。基本的には、ほとんどのアイテムは通常のテキストで表示されますが、各アイテムオブジェクトのデータによっては になります。太字または斜体のいずれかを表示するものがあります。通常、私はこれをXAMLで直接行いますが、CustomControlなので、私は少し犠牲になります。私はコード内で直接バインドすることができればと思っていますが、私はそれを行う方法を私に示すことができれば(私は手がかりではありません)、外部のXAMLスタイルで読み込むことを意味するメソッドにも開いています。ComboBoxから派生したWPF CustomControlのComboBoxアイテムにItemTemplateスタイルを適用します。
以下のコードは、使用しているコントロールの基本的な近似ですが、大幅に簡略化されています。しかし、ロードされるデータがどのように同じで、データオブジェクト自体が外部ソースから来ているのかに関する基本的な考え方は、とにかくコントロール自体にアクセスできないためです。テンプレートは にする必要があります。
var data = new FormatData[]{
new FormatData(){
Name = "Normal"
},
new FormatData(){
Name = "Bold",
Bold = true
},
new FormatData(){
Name = "Italic",
Italic = true
},
new FormatData(){
Name = "BoldItalic",
Bold = true,
Italic = true
},
};
fddTest.LoadSelection(data);
誰もが、私はこれを達成する方法のアイデアを持って次のように
public class FormatData
{
public FormatData() { }
public string Name { get; set; }
public bool Bold { get; set; }
public bool Italic { get; set; }
}
public class FormatDropDown : System.Windows.Controls.ComboBox
{
public FormatDropDown()
{
}
public void LoadSelection(FormatData[] data)
{
try
{
this.ItemsSource = data;
this.DisplayMemberPath = "Name";
}
catch (Exception e) { MessageBox.Show(e.Message); ; }
}
}
制御が移入されますか?