假设我有以下两个控件。
<ListBox ItemsSource="{Binding Path=Events}"
DisplayMemberPath="Name"
SelectedItem="{Binding SelectedEvent, Mode=TwoWay}"
Grid.Column="0" Grid.RowSpan="4" Margin="5"/>
和
<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"/>
ListBox绑定到一个“保存”自定义类的ObservableCollection。 ComboBox绑定到一个ObservableCollection字符串。现在,自定义类具有一个字符串属性,其值来自组合框。我想要的是如果我在ListBox中选择一个项目,然后从ComboBox中自动选择该值。有可能使用纯XAML或代码中的某些操作是必须的吗?我希望我的解释清楚,谢谢你的帮助。
答案 0 :(得分:1)
如果你有能力以不同的方式绑定ComboBox的SelectedItem
(因为你已经拥有SelectedEvent
而拥有专用属性似乎是多余的)这应该这样做:< / p>
SelectedItem="{Binding Path=SelectedEvent.Venue, Mode=TwoWay}"
(我不知道场地属性的实际名称,因此可能需要根据您的模型进行调整)
答案 1 :(得分:0)
我打算在这里阅读这些内容。你有一个代表某个事件的“事件”类。事件发生在某个日期和时间以及我们称之为“Venue”的位置,“Event”类具有字符串属性,即场地的名称。
您还有一个可能的地点名称列表。
您要绑定的对象具有类型为“Event”的SelectedEvent
属性和类型为SelectedVenue
的{{1}}属性。您希望应用的规则是,当在列表框中选择事件时,string
只能是事件指定的地点。
所以真正的问题是:这条规则的执行属于哪里?
这不是应用视图的工作。您绑定的模型应该知道此规则。 SelectedVenue
属性设置器中的代码应确保应用SelectedEvent
的正确值。
然后,视图将简单地反映模型的当前状态,但模型有责任了解“正确”状态不是视图的状态。