3

簡単な作業かもしれませんが、解決策が見つかりません。データベースに接続されたコンボボックスがあります。のコンテンツを表示する代わりにProductLookup、ポップアップメニューに「男性」と「女性」という単語を表示したいだけです。

ありがとうございました

<ComboBox Height="23" Name="ComboBox2" Width="120"  IsEditable="False"
                      ItemsSource="{Binding Source={StaticResource ProductLookup}}"
                      SelectedValue="{Binding Path=ProductID}" 
                      SelectedValuePath="ProductID" 
                      DisplayMemberPath="Name"/>
4

2 に答える 2

3

「Product」オブジェクトの1つを取得するaConverterを記述します。その中の性別関連データを調べるか、性別決定ロジックを実行してから、性別文字列「male」または「female」を返します。

次に、XAMLでそれを使用して:を設定しますTextBlock

<StackPanel Height="197" HorizontalAlignment="Left" Margin="300,6,0,0" Name="StackPanel5" VerticalAlignment="Top" Width="285"
                             DataContext="{Binding Source={StaticResource DetailViewPagos}}">
    <StackPanel.Resources>
        <local:ProductToGenderConverter x:Key="prodtogenderconv"/>
    </StackPanel.Resources>

    <ComboBox Height="23" Name="ComboBox2" Width="120" IsEditable="False"
        ItemsSource="{Binding Source={StaticResource ProductLookup}}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
             <TextBlock Text="{Binding Converter={StaticResource prodtogenderconv}}" />
        </DataTemplate>
    </ComboBox.ItemTemplate>
    </ComboBox>

public class ProductToGenderConverter : IValueConverter {

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {

        MyProduct prod = value as MyProduct;

        if (prod is for a male) // Pseudocode for condition
            return "male";

        if (prod is for a female) // Pseudocode for condition
            return "female";

        return null or "";
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
        throw new NotImplementedException();
    }
}

または、ProductオブジェクトをラップするViewModelを提供することもできます。これは、Productの「性別」を示す特定のプロパティを持ち、ComboBoxで設定するオブジェクトのコレクションを作成します。次に、DisplayMemberPathポイントに使用できます。そのプロパティに。

于 2012-08-22T23:16:37.973 に答える
0

この回答を参照してください。これは、WPFで適切にバインドおよび表示するために値をラップする方法です。

Itemクラスは、Codeプロパティのオブジェクトをサポートするように変更できます。

于 2012-08-23T00:02:16.860 に答える