C# 使用ItemSource时ComboboxItem的WPF绑定错误

C# 使用ItemSource时ComboboxItem的WPF绑定错误,c#,wpf,data-binding,combobox,C#,Wpf,Data Binding,Combobox,我有一个WPF应用程序.NET4.5.1,在其中动态地在组合框中创建项,并使用可观察的集合绑定到ItemSource。但是当我这样做的时候,对于我添加的每个项目,我会得到两个绑定错误,一个用于VeticalContentAlignment,一个用于HorizontalContentAlignment System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindA

我有一个WPF应用程序.NET4.5.1,在其中动态地在组合框中创建项,并使用可观察的集合绑定到ItemSource。但是当我这样做的时候,对于我添加的每个项目,我会得到两个绑定错误,一个用于VeticalContentAlignment,一个用于HorizontalContentAlignment

System.Windows.Data Error: 4 : 
Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. 
BindingExpression:Path=VerticalContentAlignment; DataItem=null; target element is 'ComboBoxItem' (Name='PhoneItem'); 
target property is 'VerticalContentAlignment' (type 'VerticalAlignment')
我在谷歌上搜索到了一些没有帮助的提示,例如添加了一个全局风格

<Style TargetType="{x:Type ComboBoxItem}">
    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    <Setter Property="VerticalContentAlignment" Value="Center" />
 </Style>
或者在组合框中定义内联容器样式

<ComboBox.ItemContainerStyle>
    <Style TargetType="ComboBoxItem">
       <Setter Property="HorizontalContentAlignment" Value="Left" />
       <Setter Property="VerticalContentAlignment" Value="Center" />
    </Style>
</ComboBox.ItemContainerStyle>
我可以在一个干净的项目中复制它,在这个项目中,我没有样式,只有一个绑定到可观察集合的组合框,如果有人有兴趣查看我的剥离代码的话

更新1-我的XAML和代码隐藏

更新2-链接到示例项目


非常感谢您对消除这些错误的任何帮助

好的,修复了您的错误。只需将您的代码替换为

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = this;

        MyItems = new ObservableCollection<ComboBoxItem>();
        MyItems.Add(new ComboBoxItem
        {
            Name = "PhoneItem_" + DateTime.Now.Second,
            Content = string.Format("Phone: {0}", "123"),
            HorizontalContentAlignment = HorizontalAlignment.Left,
            VerticalContentAlignment = VerticalAlignment.Center
        });
    }


    public ObservableCollection<ComboBoxItem> MyItems { get; set; }

    private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
    {
        MyItems.Add(new ComboBoxItem
        {
            Name = "PhoneItem_" + DateTime.Now.Second,
            Content = string.Format("Phone: {0}", "123"),
            HorizontalContentAlignment = HorizontalAlignment.Left,
            VerticalContentAlignment = VerticalAlignment.Center
        });
    }


}

你能给我链接一个干净的项目,我可以复制它吗?你能把XAML代码发布到定义ComboBox的地方吗?我怀疑这个错误与你为ComboBox定义绑定的方式有关。请发布xaml代码以及您的ViewModel或xaml代码隐藏。@FodderZone感谢您的帮助,我已在原始问题中添加了我的xaml和代码隐藏。我希望你能发现我犯的任何错误@aks81感谢您的帮助,我在原始问题中添加了我的xaml和代码。我希望你能发现我犯下的任何错误,这让我困惑了很长一段时间-不知道为什么我甚至没有想到显式设置有问题的属性。有时甚至我在编码时失去了常识。这是开发人员的一部分:
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = this;

        MyItems = new ObservableCollection<ComboBoxItem>();
        MyItems.Add(new ComboBoxItem
        {
            Name = "PhoneItem_" + DateTime.Now.Second,
            Content = string.Format("Phone: {0}", "123"),
            HorizontalContentAlignment = HorizontalAlignment.Left,
            VerticalContentAlignment = VerticalAlignment.Center
        });
    }


    public ObservableCollection<ComboBoxItem> MyItems { get; set; }

    private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
    {
        MyItems.Add(new ComboBoxItem
        {
            Name = "PhoneItem_" + DateTime.Now.Second,
            Content = string.Format("Phone: {0}", "123"),
            HorizontalContentAlignment = HorizontalAlignment.Left,
            VerticalContentAlignment = VerticalAlignment.Center
        });
    }


}