WPF Combobox绑定文本

时间:2012-08-22 23:03:04

标签: wpf combobox

也许是一项简单的任务,但我无法找到解决方案。我有一个连接到数据库的组合框。而不是显示ProductLookup的内容我只想显示“男性”字样。和女性'在弹出菜单上。

谢谢

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

2 个答案:

答案 0 :(得分:3)

写一个Converter,其中包含一个“Product”对象....查看其中的性别相关数据,或者执行性别确定逻辑,然后返回性别字符串“男性”或“女性”。

然后在您的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指向该属性。

答案 1 :(得分:0)

请参阅this回答,这是一种包装好的绑定值并在WPF中显示的方法。

可以修改Item类以支持Code属性的对象。