0

ご注意ください:

  • リスト内の 2 つのタイプは、この例では大幅に簡略化されているため、別々にしておく必要があります。

  • 型間の接続としての int の使用は変更できません。

問題:

以下のコードを考えると、次のようにマークされた ComboBox を取得するにはどうすればよいですか????

  • ColorDefs.Nameをその内容として表示します。

  • に等しいSelectedItemものに設定します。Models.DisplayColorNumberColorDefs.ColorNumber

  • Models.DisplayColorNumber選択が変更された場合は、更新されたものを更新します。

コードビハインドで

public List<ModelData> Models { get; }
public List<DisplayColorDefinition> ColorDefs { get; }

DataContext=this;

XAML:

<ListBox ItemsSource="{Binding Models}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <ComboBox ??? />
                <TextBlock Text="{Binding Models, Path=Name}" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

モデルデータ型:

public class ModelData
{
    private string name;
    private int displayColorNumber;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }
    public int DisplayColorNumber
    {
        get { return displayColorNumber; }
        set { displayColorNumber = value; }
    }
}

DisplayColorDefinition タイプ:

public class DisplayColorDefinition
{
    private int colorNumber;
    private string name;
    private Color displayColor;

    public int ColorNumber
    {
        get { return colorNumber; }
        set { colorNumber= value; }
    }

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    public Color DisplayColor
    {
        get { return displayColor; }
        set { displayColor = value; }
    }
}
4

1 に答える 1

1

SelectedValue と SelectedValuePath を使用します。

<ListBox ItemsSource="{Binding Models}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <ComboBox ItemsSource="{Binding Path=DataContext.ColorDefs, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
                            DisplayMemberPath="Name"
                            SelectedValue="{Binding Path=DisplayColorNumber}"
                            SelectedValuePath="ColorNumber"
                            />
                <TextBlock Text="{Binding Name}" />
                <TextBlock Text="{Binding DisplayColorNumber}" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

SelectedValue は Model オブジェクトのプロパティになり、SelectedValuePath はバインディングに使用する DisplayColorDefinition のプロパティを示します。

于 2013-04-12T15:26:13.927 に答える