私は高低を検索しましたが、これに対する答えを見つけることができません。2つの質問があります
- XAMLで配列またはコレクションをどのように作成しますか。そこに貼り付けてコンボボックスにバインドしたい配列があります。私の最初のアイデアは、ItemsControlをリソースディクショナリに配置することでしたが、コンボボックスのItemsSourceはIEnumerableを想定しているため、機能しませんでした。
これが私のリソース辞書で試したもので、どちらも機能しません
<ItemsControl x:Key="stateList">
<sys:String>AL</sys:String>
<sys:String>CA</sys:String>
<sys:String>CN</sys:String>
</ItemsControl>
<ItemsControl x:Key="stateList2">
<ComboBoxItem>AL</ComboBoxItem>
<ComboBoxItem>CA</ComboBoxItem>
<ComboBoxItem>CN</ComboBoxItem>
</ItemsControl>
これが私がそれにバインドする方法です
<ComboBox SelectedValue="{Binding Path=State}" ItemsSource="{Binding Source={StaticResource stateList2}}" >
</ComboBox>
編集:更新
私はこの最初の部分をこのように機能させました
<col:ArrayList x:Key="stateList3">
<sys:String>AL</sys:String>
<sys:String>CA</sys:String>
<sys:String>CN</sys:String>
</col:ArrayList>
ただし、配列リストは使用したくないので、汎用リストを使用したいので、誰かがその方法を知っている場合は、私に知らせてください。
更新の編集:XAMLはジェネリックスのサポートが非常に限られていると思うので、配列リストが今のところ最善の方法かもしれませんが、誰かが回答を持っている場合は、2番目の質問についても助けが必要です
2位。XAMLでマージされたリソースディクショナリを参照しようとしましたが、Window.resourcesの下にディクショナリ以外のものがあり、x:Keyを追加する必要があったため、問題が発生しました。キーを追加すると、システムはリソースディクショナリ内のアイテムを見つけることができなくなります。代わりに、マージされた辞書をGrid.Resourcesに移動する必要がありました。理想的には、app.xamlでマージされた辞書を参照したいのですが、同じ問題があります
ここにいくつかのサンプルコードがあります。この最初の部分は、コンバーターがあり、複数のアイテムがある場合はすべてのアイテムにキーが必要であると文句を言ったため、コンパイルにx:keyが必要でした
<UserControl.Resources>
<win:BooleanToVisibilityConverter x:Key="VisibilityConverter" />
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/ResourcesD.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
これに変更しなければなりませんでした
<UI:BaseStep.Resources>
<win:BooleanToVisibilityConverter x:Key="VisibilityConverter" />
</UI:BaseStep.Resources>
<Grid>
<Grid.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/ResourcesD.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Grid.Resources>
</Grid>
ありがとうございました