我有一个用户控件,其中有 4 个组合框绑定到该用户控件的视图模型中的集合。
我以 wpf 形式使用了这个控件。这个 wpf 表单有自己的视图模型。
如何从 wpf 表单的视图模型中的 4 个组合框访问文本?
我有一个用户控件,其中有 4 个组合框绑定到该用户控件的视图模型中的集合。
我以 wpf 形式使用了这个控件。这个 wpf 表单有自己的视图模型。
如何从 wpf 表单的视图模型中的 4 个组合框访问文本?
编辑:我看到你有不同的视图模型。现在这取决于您的用户控件的使用和 mvvm 的使用:)
旧示例:在您的视图模型中://真正的代码当然应该实现INotifyPropertyChanged
并正确提升它
public ObservableCollection<string> MyFirstCollection {get; set;}//init once, add,remove,clear to alter
public string MySelectedCombobox1Value {get;set;}
在您的用户控件中:
<ComboBox ItemsSource="{MyFirstCollection }" SelectedItem="{Binding MySelectedCombobox1Value, Mode=TwoWay}" />
这一切都与你的问题有关。确保您设置DataContext
正确。您可以使用 snoop 等工具进行检查。我发布的代码预计组合框的数据连接是视图模型。
唯一干净的方法是使用绑定,唯一推荐的方法是用户控件公开DependencyProperty
ViewModel 或单个文本属性(如 sellmeadog 建议的那样)以供使用。然后,您可以在父 ViewModel 中拥有一个直接绑定到该依赖属性的属性。
UserControl 应该继承您将其添加到的表单的数据上下文,该表单将是视图模型。UserControl 中的任何绑定都将与继承的数据上下文相关。您是否尝试将视图模型属性绑定到ComboBox.Text
?
更新
对不起,误读了你的问题。没有看到用户控件已经有自己的视图模型。
虽然似乎有更好的方法,但您可以在用户控件上公开依赖属性,以公开每个组合框的文本。只是大声思考。