Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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# RX:如果绑定到列表,则组合框为空<;字符串>;|ViewModelViewHost找不到视图模型的有效视图_C#_Wpf_Data Binding_Reactiveui - Fatal编程技术网

C# RX:如果绑定到列表,则组合框为空<;字符串>;|ViewModelViewHost找不到视图模型的有效视图

C# RX:如果绑定到列表,则组合框为空<;字符串>;|ViewModelViewHost找不到视图模型的有效视图,c#,wpf,data-binding,reactiveui,C#,Wpf,Data Binding,Reactiveui,在视图中,model是一个 public List OperationModes{get;}=Enum.GetNames(typeof(EOperationMode)).ToList(); 我想将其绑定到组合框 反应方式|不起作用 this.OneWayBind(ViewModel,model=>model.OperationModes,window=>window.ComboBoxOperationMode.ItemsSource); 如果使用reactiveUI将列表绑定到组合框,则控

视图中,model
是一个

public List OperationModes{get;}=Enum.GetNames(typeof(EOperationMode)).ToList();
我想将其绑定到
组合框

反应方式|不起作用
this.OneWayBind(ViewModel,model=>model.OperationModes,window=>window.ComboBoxOperationMode.ItemsSource);

如果使用
reactiveUI
列表
绑定到
组合框
,则
控制台输出中会出现以下错误

控制台输出

DefaultViewLocator:无法解析视图模型类型“System.Object”的视图。
DefaultViewLocator:无法解析视图模型类型“System.Object”的视图。
ViewModelViewHost:ViewModelViewHost找不到System.String和value Passthrough类型的视图模型的有效视图。
xaml方式|工作

我怎样才能解决这个问题?或者不能通过
reactiveUI
绑定
列表



Github问题:

由于您的列表是只读的,您可以直接分配ItemsSource,而不需要OneWayBind(通过代码或xaml,就像您已经拥有的那样)。ReactiveUI绑定功能强大,但需要付出代价,所以如果您可以直接分配,那么就这样做。即使您的列表随着时间的推移而改变,您仍然可以借助ObservableCollection而不是list来避免反应式UI绑定。

由于您的列表是只读的,您可以直接分配ItemsSource,而不需要单向绑定(通过代码或xaml,就像您已经拥有的那样)。ReactiveUI绑定功能强大,但需要付出代价,所以如果您可以直接分配,那么就这样做。即使您的列表随着时间的推移而改变,您仍然可以借助ObservableCollection而不是list来避免反应式UI绑定。

设置组合框的
DisplayMemberPath
属性,以避免使用试图解析
字符串的视图的
ViewModelViewHost

<ComboBox x:Name="ComboBoxOperationMode" DisplayMemberPath="." />

设置
组合框的
DisplayMemberPath
属性,以避免使用试图解析
字符串的视图的
ViewModelViewHost

<ComboBox x:Name="ComboBoxOperationMode" DisplayMemberPath="." />


这意味着,由于性能原因,在任何可能的地方都使用xaml绑定?这是一个我无法通过被动绑定列表的错误吗?请参阅mm8以获得更完整的答案。我不会百分之百同意柯尔特的意见。在wpf的土地上,在初始化的时候有一个轻微的惩罚,否则它是相当有效的。好吧,我不是说它是低效的,否则我不会自己使用它。因此,我同意这是相当有效的。我的观点是,任何东西都有成本,即使成本很小。因此,如果变量或列表不随时间变化,则直接赋值总是更有效。当您在列表项中进行绑定时,这一点变得更为重要。这意味着,出于性能考虑,在任何可能的情况下都可以使用xaml绑定?这是一个我无法通过被动绑定列表的错误吗?请参阅mm8以获得更完整的答案。我不会百分之百同意柯尔特的意见。在wpf的土地上,在初始化的时候有一个轻微的惩罚,否则它是相当有效的。好吧,我不是说它是低效的,否则我不会自己使用它。因此,我同意这是相当有效的。我的观点是,任何东西都有成本,即使成本很小。因此,如果变量或列表不随时间变化,则直接赋值总是更有效。当您在列表项内进行绑定时,这一点变得更加重要。您还可以设置itemtemplate以避免此问题。因为如果您绑定到一个ItemsSource并且不设置任何一个,它会尝试在列表中查找该类型的IViewFor。您还可以设置itemtemplate以避免此问题。因为如果您绑定到一个ItemsSource并且不设置任何一个,它会尝试在列表中查找该类型的IViewFor。就绑定到列表而言。当然可以。你只需要遵循mm8的建议。请注意,如果您更改列表内容,if将不会更新。就绑定到列表而言。当然可以。你只需要遵循mm8的建议。请注意,如果更改列表内容,则不会更新。