Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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
Wpf 是否使用绑定从填充的组合框中自动选择项目?银光_Wpf_Silverlight_Data Binding_Select_Combobox - Fatal编程技术网

Wpf 是否使用绑定从填充的组合框中自动选择项目?银光

Wpf 是否使用绑定从填充的组合框中自动选择项目?银光,wpf,silverlight,data-binding,select,combobox,Wpf,Silverlight,Data Binding,Select,Combobox,假设我有以下两个控件 <ListBox ItemsSource="{Binding Path=Events}" DisplayMemberPath="Name" SelectedItem="{Binding SelectedEvent, Mode=TwoWay}" Grid.Column="0" Grid.RowSpan="4" Margin="5"/> 及 ListBox绑定到“保存”自定义类的ObservableCo

假设我有以下两个控件

<ListBox ItemsSource="{Binding Path=Events}"
         DisplayMemberPath="Name"
         SelectedItem="{Binding SelectedEvent, Mode=TwoWay}"
         Grid.Column="0" Grid.RowSpan="4" Margin="5"/>



ListBox绑定到“保存”自定义类的ObservableCollection。组合框绑定到一个可观察的字符串集合。现在,自定义类有一个字符串属性,其值来自combobox。我想要的是,如果我在列表框中选择一个项目,然后从组合框中自动选择该值。是否可以使用纯XAML或必须在代码隐藏中执行某些操作?我希望我的解释清楚,谢谢你的帮助。

我将在这里读到字里行间的内容。您有一个表示某个事件的“Event”类。事件发生在某个日期和时间以及我们称之为“场所”的位置,“事件”类有一个字符串属性,即场所的名称

您还有一个可能的场馆名称列表

您要绑定到的对象具有类型为“事件”的
SelectedEvent
属性和类型为
string
selectedVince
属性。您希望应用的规则是,当在列表框中选择某个活动时,
selectedvention
只能是该活动指定的地点

因此,真正的问题是:这条规则的执行属于哪里

这并不是要应用的视图的工作。您要绑定到的模型应该知道此规则。SelectedEvent属性设置器中的代码应确保应用了SelectedVenue的正确值


然后,视图将简单地反映模型的当前状态,但模型有责任了解哪些“正确”状态不是视图的状态。

如果您能够以不同方式绑定组合框的
SelectedItem
(无论如何,拥有一个专用属性似乎是多余的,因为您已经选择了
SelectedEvent
)这应该可以做到:

SelectedItem=“{Binding Path=SelectedEvent.Venue,Mode=TwoWay}”

(我不知道场馆属性的实际名称,因此可能需要根据您的模型进行调整)

您是否使用MVVM?这是一个很好的示例,视图模型可以为您完成所有这些逻辑。@rescueme:很高兴这有帮助:)谢谢,如果我不需要“额外”属性,您给了我一个很好的解决方案。我希望我能接受你和Anthonys的回答。谢谢你Anthony,我做到了,同时你写的也很有魅力。
<ComboBox x:Name="VenueBox"
          ItemsSource="{Binding Path=VenueNames}"
          SelectedItem="{Binding Path=SelectedVenueName, Mode=TwoWay}"
          Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2"
          Margin="10"/>