将列表框绑定到XAML中的SelectionChanged ComboBox

米莎·扎斯拉夫斯基(Misha Zaslavsky)

我想绑定组合框的选择更改以更新我的列表框,但是我的xaml代码可能是错误的。

这是我的收藏,从服务中获取数据。

public class WorkersCollection
{
    private WorkerClient client = new WorkerClient();
    public ObservableCollection<Worker> Workers { get; set; }

    public WorkersCollection()
    {
        Workers = new ObservableCollection<Worker>();
    }

    public ICollection<Worker> GetAllWorkers()
    {
        foreach (var worker in client.GetAllWorkers())
        {
            Workers.Add(worker);
        }

        return Workers;
    }
}

我的DataContext是工作人员:

public partial class MainWindow : Window
{
    WorkersCollection workers;

    public MainWindow()
    {
        InitializeComponent();

        workers = new WorkersCollection();
        this.DataContext = workers;

        workers.GetAllWorkers();
    }
}

在XAML中:

<ComboBox Name="cbxWorkers" HorizontalContentAlignment="Right" SelectedItem="{Binding Workers}" ItemsSource="{Binding Workers}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <ComboBoxItem Content="{Binding LastName}" />
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

<ListBox Grid.Row="3" ItemTemplate="{StaticResource WorkersTemplate}" ItemsSource="{Binding ElementName=cbxWorkers, Path=SelectedItem}" />

我该如何解决?

克米亚塞克(Kmatyaszek)

ItemsSource类的属性ListBox具有类型IEnumerablemsdn)。

因此,您不能为其分配类型为的对象Worker

您可以创建转换器来做到这一点。

转换器类别:

public class WorkerToListConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return new List<Worker> { value as Worker };
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

XAML代码:

...
<Window.Resources>
        <local:WorkerToListConverter x:Key="myCon" />
</Window.Resources>    
...
<ComboBox Name="cbxWorkers" HorizontalContentAlignment="Right" ItemsSource="{Binding Workers}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <ComboBoxItem Content="{Binding LastName}" />
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

<ListBox Grid.Row="3" ItemTemplate="{StaticResource WorkersTemplate}" 
         ItemsSource="{Binding ElementName=cbxWorkers, Path=SelectedItem, Converter={StaticResource myCon}}" />
...

您还应该SelectedItem从ComboBox删除绑定。

   ... SelectedItem="{Binding Workers}" ItemsSource="{Binding Workers}" ...

绑定SelectedItem与相同的东西是没有意义的ItemsSource

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将DataTemplate中的ComboBox ItemSource绑定到列表?

来自分类Dev

将列表绑定到C#中的comboBox

来自分类Dev

将列表绑定到C#中的comboBox

来自分类Dev

如何将ComboBox绑定到JavaFX中的列表?

来自分类Dev

如何使用 Combobox 加载列表框

来自分类Dev

将ComboBox绑定到Displaymember到对象

来自分类Dev

ComboBox 中的 SelectedItem 绑定

来自分类Dev

将ComboBox SelectedItem绑定到Datagrid

来自分类Dev

将UWP ComboBox ItemsSource绑定到Enum

来自分类Dev

将ComboBox绑定到DataGrid条目

来自分类Dev

WPF:将List <class>绑定到ComboBox

来自分类Dev

WPF:将ComboBox绑定到int值

来自分类Dev

将ComboBox绑定到Model / ViewModel

来自分类Dev

WPF:将List <class>绑定到ComboBox

来自分类Dev

使用ComboBox将DataGridView绑定到DataTable

来自分类Dev

JavaFX-将LinkedHashMap绑定到ComboBox

来自分类Dev

将值从字典绑定到 ComboBox

来自分类Dev

将集合绑定到 ComboBox 和 DataGrid

来自分类Dev

将Combobox ItemsSource绑定到DataTemplate中的StaticResource吗?

来自分类Dev

如何将方法绑定到JavaFX中的combobox?

来自分类Dev

列表框项目内的 ComboBox 的龚WPF问题

来自分类Dev

将图像绑定到WPF中的列表框

来自分类Dev

无法将列表框绑定到类中的ObservableCollection

来自分类Dev

ComboBox绑定到SQL DB

来自分类Dev

ComboBox绑定到SQL DB

来自分类Dev

WPF枚举绑定到ComboBox

来自分类Dev

XAML ComboBox错误WPF

来自分类Dev

WPF ComboBox绑定ItemsSource

来自分类Dev

JavaFX ComboBox绑定