是否可以将多个源绑定到元素的依赖属性?
在我的情况下,我有一个组合框控件,其ItemSource属性由视图模型填充,但是Text属性绑定到由ItemsControl使用的模型。
谢谢。
xaml片段:
<DataTrigger Binding="{Binding EnumType}" Value="6">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<ComboBox
x:Name="ListOfItems"
IsDropDownOpen="{Binding IsDropDownOpen,Mode=OneWay,UpdateSourceTrigger=PropertyChanged}"
StaysOpenOnEdit="True"
IsTextSearchEnabled="False"
IsReadOnly="False"
IsEditable="True"
ItemsSource="{Binding Path=FilteredSource, Source={StaticResource ItemsVM} ,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
Text="{Binding Path=Result, UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="{Binding Path=Item.Name, Source={StaticResource ItemsVM}}" >
<ComboBox.Triggers>
<EventTrigger RoutedEvent="TextBoxBase.TextChanged">
<BeginStoryboard>
<Storyboard>
<BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsDropDownOpen">
<DiscreteBooleanKeyFrame Value="True" KeyTime="0:0:0" />
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</ComboBox.Triggers>
</ComboBox>
</DataTemplate>
</Setter.Value>
</Setter>
答案 0 :(得分:1)
您可以像为Source
属性当前所做的那样设置每个绑定的ItemsSource
:
ItemsSource="{Binding Path=FilteredSource, Source={StaticResource ItemsVM}}"
如果不这样做,则框架将在FilteredSource
的当前DataContext
中寻找ComboBox
属性。
顺便说一下,应将DisplayMemberPath
属性设置为string
,以指定ItemsSource
中某项的属性名称:
DisplayMemberPath="Name"
您不应绑定到此属性。
将UpdateSourceTrigger
绑定的ItemsSource
属性设置为PropertyChanged
或将Mode
设置为TwoWay
也没有意义,因为将不会设置源属性。