XAMALバインディングを使用して複数のObjectDataProvidersの入力にComboBoxのSelectedValueをバインドできるかどうかを確認しようとしています。WPF Combobox.SelectedValueを複数のObjectDataProvidersにバインドすることはできますか?
私はMultiBindingを見ましたが、それは複数のコントロールをまとめてグループ化しているように見えます。
私はComboBox(位置)でTextBlock(deviance)を変更し、TextBox(locationComments)を更新するためにObjectDataProvider(CommentProvider)を呼び出すことができます。
これはコードビハインドではかなり簡単ですが、学習の経験としてこのルートを使用しないことをお勧めします。あなたはMultiBindingので正しい軌道に乗っている
XAMALのCODE
<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