したがって、ComboBoxにSelectedItem
の小さな問題があります。DataTemplateのComboBox SelectedItemを自分自身に設定する
まず、ComboBox内のアイテムに使用するテンプレートがあります。なぜなら、すべてのItemに対してアイコンとテキストを表示したいからです。
<DataTemplate x:Key="PersonsComboBox" DataType="asi:Person">
<WrapPanel>
<StackPanel Orientation="Horizontal">
<Image Width="40" Height="30" Source="{Binding Path=Symbol, Converter={StaticResource ImageConverter}}" />
<vw:Label Content="{Binding Name}" />
</StackPanel>
</WrapPanel>
</DataTemplate>
ご覧のとおり、このテンプレートはデータタイプPerson
に由来しています。
今、このComboBoxを別のDataTemplateで使用します。 DataTemplateを、次のようになります。
<DataTemplate x:Key="PersonsTemplate" DataType="asi:Person">
<vw:ComboBox ItemTemplate="{StaticResource PersonsComboBox}" ItemsSource="{Binding AllPersons}" SelectedItem="???">
</DataTemplate>
プロパティAllPersons
が会社で働くすべての人のリストです。人物には2つの属性Name
とSymbol
(顔の画像)があります。
AllPersons = new List<Person>
{
new Person { Name = "Jenny", Symbol = new Image.FromFile("Path") },
new Person { Name = "Mike", Symbol = new Image.FromFile("Path") }
new Person { Name = "Peter", Symbol = new Image.FromFile("Path") }
new Person { Name = "Nicole", Symbol = new Image.FromFile("Path") }
}
人:私はコンボボックスの多くを表示したい終わり
public class Person
{
public string Name { get; set; }
public Image Symbol { get; set; }
}
(ItemsControlにを使用して)。各ComboBoxは人を表します。しかし私は人を切り替えることができるようにしたい。 SelectedItemだから基本的に私が欲しいものSelectedDepartment.Persons
<StackPanel>
<ItemsControl ItemsSource="{Binding SelectedDepartment.Persons, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ItemTemplateSelector="{StaticResource PersonTemplateSelector}"/>
</StackPanel>
の項目でなければなりませんのSelectedItem =「{バインディング}」ので、それ自体であることを私のコンボボックスののSelectedItemを設定することです。しかし、ItemSourceは別のものです。彼らはちょうど同じデータ型を持っています
本当に便利ではありませんActionクラスは、アクションのプロパティを持っていますか?あなたのクラス定義を投稿してください。 – mm8
それ自体は 'DataContext'ですか? 'SelectedItem =" {Binding} "は動作するかどうか(OneWay/OneTimeバインディングの可能性が高いでしょうか?私の推測では、単純に 'Action'で' Equals() 'をオーバーライドする必要があります。 – Sinatr
@ mm8質問を更新して、私が意味することをもっと分かりやすくしました – user2877820