这是在我的 app.xaml 文件中(删减):
<Application.Resources>
<x:Array x:Key="SongTitleString" Type="local:ComboBoxItemString">
<local:ComboBoxItemString ValueString = "Song 1"/>
<local:ComboBoxItemString ValueString = "Song 2"/>
<local:ComboBoxItemString ValueString = "Song 3"/>
</x:Array>
</Application.Resources>
这是课程:
namespace OCLMEditor
{
/// This class provides us with an object to fill a ComboBox with
/// that can be bound to string fields in the binding object.
public class ComboBoxItemString
{
public string ValueString { get; set; }
}
}
这是标记:
<ComboBox x:Name="comboSongOpen" ItemsSource="{StaticResource SongTitleString}"
DisplayMemberPath="ValueString"
SelectedValuePath="ValueString"
SelectedValue="{Binding SongTitle}">
<ComboBox.MaxWidth>
<Binding Path="ActualWidth"
ElementName="textWeeklyBibleReading"/>
</ComboBox.MaxWidth>
</ComboBox>
都好。这个问题是,当歌曲标题显示在组合上时,我想在歌曲标题前加上一个 3 位数的数字。例如:
001 - Song 1 002 - Song 2 003 - Song 3
最终,在应用程序的其他地方,我将希望使用组合框选择索引从资源中提取正确的歌曲标题(没有前缀)。
这可能吗?
更新:
如果我创建一个 XML:
<?xml version="1.0" encoding="utf-8" ?>
<Settings>
<SongTitles>
<SongTitle Number="1" Title = "Jehovah's Attributes"/>
</SongTitles>
</Settings>
并将其作为资源添加到 WPF:
<Window.Resources>
<XmlDataProvider x:Key="XmlData" Source="OCLM_Resources.xml" XPath="Settings/SongTitles" />
</Window.Resources>
然后使用:
<ComboBox x:Name="comboSongOpen"
ItemsSource="{Binding Source={StaticResource XmlData}, XPath=./SongTitle}" DisplayMemberPath="@Title">
<ComboBox.MaxWidth>
<Binding Path="ActualWidth"
ElementName="textWeeklyBibleReading"/>
</ComboBox.MaxWidth>
</ComboBox>
在下拉菜单中显示标题。但是我不能完全理解使用ItemTemplate
和/或将属性(用于格式化 0.000)结合在一起。