これは私の 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 をフォーマットするため) を一緒に使用および/またはスティッチングすることについて、頭を悩ませることはできません。