Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 绑定到列表视图中的WPF组合框(双向)_C#_Wpf_Data Binding - Fatal编程技术网

C# 绑定到列表视图中的WPF组合框(双向)

C# 绑定到列表视图中的WPF组合框(双向),c#,wpf,data-binding,C#,Wpf,Data Binding,我的问题是必须绑定列表视图中嵌入的组合框的选定值。在组合框中显示项目没有问题。然而,我希望我能有一种方法来指定在点击按钮时组合框应该显示什么(从它所包含的项目中)。我想在这个问题上有几个帖子,但是,我不能得到我想要的。这是我的密码 XAML: 点击我! C#代码隐藏: public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); O

我的问题是必须绑定列表视图中嵌入的组合框的选定值。在组合框中显示项目没有问题。然而,我希望我能有一种方法来指定在点击按钮时组合框应该显示什么(从它所包含的项目中)。我想在这个问题上有几个帖子,但是,我不能得到我想要的。这是我的密码

XAML:


点击我!
C#代码隐藏:

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

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        //Something here that dictates what should be displayed in the combo box
    }

    List<MyObject> myObjectCollection = new List<MyObject>();
    public List<MyObject> MyObjectCollection
    {
        get
        {
            myObjectCollection.Add(new MyObject("One"));
            myObjectCollection.Add(new MyObject("Two"));
            return myObjectCollection;
        }
    }

}

public class MyObject : INotifyPropertyChanged
{
    private string _name;

    public MyObject(string name)
    {
        // TODO: Complete member initialization
        this._name = name;
    }

    public string Name
    {
        get
        {
            return _name;
        }
    }

    string selectedType = string.Empty;
    public string SelectedType
    {
        get
        {
            return selectedType;
        }
        set
        {
            selectedType = value;
            this.NotifyChange("SelectedType");
        }
    }

    #region INotifyPropertyChanged Members

    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyChange(params object[] properties)
    {
        if (PropertyChanged != null)
        {
            foreach (string p in properties)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(p));
            }
        }
    }
    #endregion
}
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
optionListView.DataContext=此;
}
私有无效按钮\u单击(对象发送者,路由目标e)
{
//这里的内容指示组合框中应显示的内容
}
List myObjectCollection=new List();
公共列表MyObject集合
{
得到
{
添加(新的MyObject(“一”);
添加(新的MyObject(“两”);
返回myObjectCollection;
}
}
}
公共类MyObject:INotifyPropertyChanged
{
私有字符串\u名称;
公共MyObject(字符串名称)
{
//TODO:完成成员初始化
这个。_name=name;
}
公共字符串名
{
得到
{
返回_name;
}
}
string selectedType=string.Empty;
公共字符串选择类型
{
得到
{
返回所选类型;
}
设置
{
selectedType=值;
此.NotifyChange(“SelectedType”);
}
}
#区域INotifyProperty更改成员
公共事件属性更改事件处理程序属性更改;
私有void NotifyChange(参数对象[]属性)
{
if(PropertyChanged!=null)
{
foreach(属性中的字符串p)
{
房地产变更(这是新的房地产变更发展(p));
}
}
}
#端区
}
如果有人能帮我解决这个问题,我会很高兴的

谢谢
拉姆我不确定我是否误解了你的问题。我认为你的问题是关于参考问题。我对你的代码做了一点修改,点击按钮就可以了

请参阅下面的代码

XAML:


C#代码:

private Collection sources=new Collection(){“ABC”、“DEF”、“XYZ”};
公共集合源{get{return Sources;}}
私有无效按钮\u单击(对象发送者,路由目标e)
{
myObjectCollection[0]。SelectedType=源[0];
myObjectCollection[1]。SelectedType=源[2];
}
怎么样

foreach (ComboBox c in OptionsListView.Items)
            {
                c.SelectedValue = "Put your value here";
            }
这应该可以完成这项工作,如果您的内部有组合框以外的其他对象,则可以添加

if (c is ComboBox)

为确保您使用的对象正确

非常感谢Howard。。它现在工作得很好!显然,我一直试图用一个没有绑定到它的值来设置combobox。现在,当我指定(正如您所建议的)一个要绑定到组合框的集合时,它就像魅力一样工作!我说得对吗?是否使用ItemSource将数据绑定到组合框是这里的关键?谢谢!嗨,大马士革,我不认为你的建议有效。My listview绑定到MyObject的集合,因此foreach在optionListView.Items中看不到组合框。它只看到MyObject类型的项,这正是我的问题所在。幸运的是,霍华德的建议起了作用!无论如何,非常感谢您对这个问题的快速思考。我觉得奇怪的是,这不起作用
ListView.Item
为您提供一个
ItemCollection
,其中包含列表中显示的所有可视控件(即此处的组合框),如果您希望列表中包含
MyObject
,您应该使用属性
ItemsSource
。不管怎样,希望我能帮上忙
private Collection<string> sources = new Collection<string>() { "ABC", "DEF", "XYZ" };
public Collection<string> Sources { get { return sources; } }

private void Button_Click(object sender, RoutedEventArgs e)
{
    myObjectCollection[0].SelectedType = Sources[0];
    myObjectCollection[1].SelectedType = Sources[2];
}
foreach (ComboBox c in OptionsListView.Items)
            {
                c.SelectedValue = "Put your value here";
            }
if (c is ComboBox)