這是我的App.xaml文件(減少):添加前綴的ItemSource值組合框
<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)。
你真的硬編碼組合框條目或者他們通過'combobox.Items.Add'或插入'DataSource'? – pay
目前,154個標題的大名單作爲資源在'app.xml'文件中。最終我需要支持**本地化**。我沒有使用'Add'函數調用。根據我的問題,我正在使用'ItemSource'。 –
我可以建議將歌曲列表放入文件中,並在應用程序初始化時讀取該文件,然後通過Items.Add添加它們。這是一個非常簡單的解決方案來編號/索引您的條目。 – pay