从绑定的组合框中自动选择项目? Silverlight的

时间:2011-07-24 20:26:12

标签: 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"/>

<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或代码中的某些操作是必须的吗?我希望我的解释清楚,谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

如果你有能力以不同的方式绑定ComboBox的SelectedItem (因为你已经拥有SelectedEvent 而拥有专用属性似乎是多余的)这应该这样做:< / p>

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

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

答案 1 :(得分:0)

我打算在这里阅读这些内容。你有一个代表某个事件的“事件”类。事件发生在某个日期和时间以及我们称之为“Venue”的位置,“Event”类具有字符串属性,即场地的名称。

您还有一个可能的地点名称列表。

您要绑定的对象具有类型为“Event”的SelectedEvent属性和类型为SelectedVenue的{​​{1}}属性。您希望应用的规则是,当在列表框中选择事件时,string只能是事件指定的地点。

所以真正的问题是:这条规则的执行属于哪里?

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

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