2

ObjectDataProviderを使用して列挙型にバインドされたItemsSourceを持つコンボボックスがあり、そのSelectedItemプロパティはビジネスオブジェクトのプロパティにバインドされています。何らかの理由で、SelectedItemを最初にバインドし、ItemsSourceを2番目にバインドしているため、businessobjectプロパティのデフォルトが上書きされます。理由とおそらく修正のアイデアはありますか?前もって感謝します。

XAML:

<CollectionViewSource x:Key="Units">
     <CollectionViewSource.Source>
          <ObjectDataProvider MethodName="GetNames" ObjectType="{x:Type sys:Enum}">
               <ObjectDataProvider.MethodParameters>
                    <x:Type TypeName="BO:Unit"/>
               </ObjectDataProvider.MethodParameters>
          </ObjectDataProvider>
     </CollectionViewSource.Source>
</CollectionViewSource>

<ComboBox Grid.Column="1" HorizontalAlignment="Right" Width="80"
          ItemsSource="{Binding Source={StaticResource Units}}" 
          SelectedItem="{Binding Path=Unit}"/>
4

1 に答える 1

0

私はあなたのコードを試しましたが、うまく機能しているので、バインディングの順序が問題になるとは思いません。私が気づいたことの1つはGetNames、のMethodNameとして使用しているObjectDataProviderため、ComboBoxItemsSourceは列挙型ではなく文字列のコレクションになるということUnitです。これがあなたの意図である場合、プロパティUnitはタイプである必要がありますstring

public class NamesViewModel
{
    public NamesViewModel(string unit)
    {
        Unit = unit;
    }
    public string Unit
    {
        get;
        set;
    }
}

に変更GetNamesするGetValuesと、列挙型のプロパティで機能しますUnit

public class ValuesViewModel
{
    public ValuesViewModel(Unit unit)
    {
        Unit = unit;
    }
    public Unit Unit
    {
        get;
        set;
    }
}
于 2011-02-23T21:47:08.123 に答える