Попытка определить, можно ли связать SelectedValue ComboBox с входами нескольких ObjectDataProviders с привязками XAMAL.Можно ли связать WPF Combobox.SelectedValue с несколькими ObjectDataProviders?
Я посмотрел на MultiBinding, но, похоже, группирует несколько элементов управления вместе, а не то, что я ищу на день.
Я бы хотел, чтобы ComboBox (местоположения) менял TextBlock (deviance), который он делает И, чтобы вызвать ObjectDataProvider (CommentProvider) для обновления TextBox (locationComments).
Это довольно прямолинейно в кодировке, но предпочел бы не идти этим путем как опыт обучения.
XAMAL КОД
<Window.Resources>
<ObjectDataProvider x:Key="LocationProvider"
ObjectType="{x:Type srv:ServiceClient}"
IsAsynchronous="True"MethodName="GetAssignedLocations" />
<ObjectDataProvider
x:Key="DevianceProvider"
ObjectType="{x:Type srv:ServiceClient}"
IsAsynchronous="True" MethodName="GetPercentChange">
<ObjectDataProvider.MethodParameters>
<system:String>Location1</system:String>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<ObjectDataProvider
x:Key="CommentProvider"
ObjectType="{x:Type srv:ServiceClient}"
IsAsynchronous="True"
MethodName="GetCommentByBusinessUnit">
<ObjectDataProvider.MethodParameters>
<system:String>Location1</system:String>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
<ComboBox Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Name="locations" VerticalAlignment="Top" ItemsSource="{Binding Source={StaticResource LocationProvider}}"
DisplayMemberPath="BuName" SelectedValuePath="BuKey"
SelectionChanged="locations_SelectionChanged">
<ComboBox.SelectedValue>
<Binding Source="{StaticResource DevianceProvider}"
Path="MethodParameters[0]"
BindsDirectlyToSource="True"
Mode="OneWayToSource" />
</ComboBox.SelectedValue>
<TextBlock Name="deviance" Height="23" Margin="0,0,645,17" Width="40" Text="{Binding Source={StaticResource DevianceProvider}}" IsEnabled="False" />
<TextBox Height="23" Margin="0,0,181,17" Name="locationComments" Width="350" />
Похоже, что при преобразовании и многосвязности объектдатапровайдеры не срабатывают при изменении выбранного значения. Точка прерывания внутри ConvertBack поражается, но точки останова в моей службе WCF не попадают. – Brian
Я понял свою проблему, если вы не указали исходный тег правильно, он не работает. Представь это. Source = "{StaticResource CommentProvider}" – Brian
Первое, что приходит в голову, это то, что типы должны соответствовать. Несмотря на то, что вы можете в значительной степени использовать любую ценность в любом поле в WPF, некоторые вещи, такие как параметры метода или новое свойство привязки StringFormat, знают тип. Поэтому, если ваш BuKey не является также строкой, которая может вызывать проблемы. Помимо этой возможной причины, он должен работать, и WCF может быть блокирующим здесь. Быстрый способ решить эту проблему - удалить поставщиков данных объектов, а в ConvertBack - вызвать вызовы методов, которые вам нужны. Затем в привязках привязывается к необходимым элементам. – rmoore