我有一個wpf應用程序,c#在組合框關閉時顯示文本(teahcer的名稱)。基本上它包含在1個字符串中並傳遞給classInstance.TeachersComboBoxText
或Text="{Binding Path=TeachersComboBoxText}"
。一切都很好,但如果老師被標記爲不是默認或中學老師,客戶要求文本以斜體顯示。基本上,我需要一個字符串,但不同的字體樣式適用於它,取決於我的數據。如何在一個字符串中應用不同的字體樣式
<ComboBox Name="instanceTeachersComboBox"
IsEditable="True"
IsReadOnly="True"
ItemsSource="{Binding Path=TeacherList}" DropDownClosed="teachersComboBox_DropDownClosed"
Text="{Binding Path=TeachersComboBoxText}"
FontWeight="{Binding Path=IsSelectedFontWeight}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=IsSelected}"
Background="{Binding Path=IsActiveColour}"
Content="{Binding Path=Display}"
Foreground="{Binding Path=IsClashColour}"
FontStyle="{Binding Path=EndDateFontStyle}"/>
<Image Source="/SchoolEdgeTimetable;component/Images/greentick16x16.png"
Margin="5,0,0,0"
Visibility="{Binding Path=IsSpecialitySubjectVisibility}"></Image>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
===這是代碼====
if (classInstance.TeacherList.Any(c => c.IsSelected == true && c.IsDefault == false) || instanceCount != defaultCount)
{
System.Windows.Forms.RichTextBox rtf = new System.Windows.Forms.RichTextBox();
foreach (var item in data)
{
if (!item.IsDefault)
{
rtf.SelectionFont = new Font("Arial", 12, System.Drawing.FontStyle.Italic);
rtf.AppendText(item.Display);
}
text = GT.Join2Strings(text, item.IsDefault? item.Display : rtf.Text, "\n");
}
}
else
text = DEFAULT_TEXT;
classInstance.TeachersComboBoxText = text;
我試圖RTF,因爲我似乎無法在普通字符串應用它,但代碼是行不通的。有沒有辦法解決這個問題,而不使用rtf?或者如果沒有,爲什麼我的代碼不工作?任何人都可以建議更好的方式來做到這一點將不勝感激。謝謝
更新: 人們建議修改模板,我已經做了,這是偉大的顯示項目時,組合框是打開的。我的一個項目是紅色,斜體,你可以看到,但我試圖做的,但修改顯示組合框TEXT屬性。我附上了一張圖片,以便更好地瞭解我的意思。 感謝
但老師的名字被附加在一起只有一個字符串。請參閱我的代碼。所以IsDefault觸發器將不再起作用。這是一個文本,而不是一個實例或對象。謝謝 – user742102