1

ユーザーが必要な選択を選択できるcomboBoxがあります。コンボボックスの選択に基づいて、ユーザーの選択に関連する文字列のリストを含むリストボックスを表示します。

例:ユーザーがcomboBoxで「動物」を選択すると、listBoxには「サル、馬、ブタ」が表示されます。

最小限のコーディング(XAML駆動)でこの単純なバインディングを作成しようとしていますが、1日間は役に立ちません。前もって感謝します!

編集:

別の方法(すべてのデータを格納するためにxamlとクラスのみを使用)に関心のある方は、提供されたリンクでJehofによる回答を確認できます。これを実現するのは非常に簡単な方法です。

ListBoxはバインディングデータを表示しません

4

1 に答える 1

2

これは、あなたが探しているものの簡単な例です(開始するため)。

最初に、すべてのデータを含むオブジェクトを作成し、それを にバインドします。ComboBoxコンボボックスSelectedItemを使用してListBox.

コード:

public partial class MainWindow : Window
{
    public MainWindow()
    { 
        InitializeComponent(); 
        Categories.Add(new Category { Name = "Animals", Items = new List<string> { "Dog", "Cat", "Horse" } });
        Categories.Add(new Category { Name = "Vehicles", Items = new List<string> { "Car", "Truck", "Boat" } });

    }

    private ObservableCollection<Category> _categories = new ObservableCollection<Category>();
    public ObservableCollection<Category> Categories
    {
        get { return _categories; }
        set { _categories = value; }
    }
}

public class Category
{
    public string Name { get; set; }
    public List<string> Items { get; set; }
}

Xaml:

<Window x:Class="WpfApplication10.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" Name="UI">

        <StackPanel DataContext="{Binding ElementName=UI}">
            <ComboBox x:Name="combo" ItemsSource="{Binding Categories}" DisplayMemberPath="Name"/>
            <ListBox ItemsSource="{Binding SelectedItem.Items, ElementName=combo}"/>
        </StackPanel>
</Window>

結果:

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

于 2013-03-19T03:19:25.203 に答える