ComboBox - привязать выбранное значение - PullRequest
1 голос
/ 17 июня 2011

Я хочу связать выбранное значение в выпадающем списке со свойством ограниченного объекта, а также установить выбранный индекс каждого выпадающего списка в 0.
Проблема в том, что только первый комбо показывает выбранный элемент.

public enum SubEnum1
{       
   Apple=1,
   Banana=2,
   Pear=3
}    

public enum FullEnum
{       
   Apple=1,
   Banana=2,
   Pear=3,

   Cucumber=4,
   Tomato=5,
   Onion=6
}

Окно XAML. У меня есть некоторый элемент управления данными (список), где находится табличка с данными, в которой есть выпадающий список.
комбинированные списки ограничены SubEnum1.

Элемент управления данными ограничен коллекцией объектов:

List<MyObject> collection = new List<MyObject>()
//collection.Add...

mylist.ItemsSource = collection;

public class MyObject
{
  public FullEnum TheSelectedEnum {get;set;}
  ....
  //other properties
}



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

            return value;

        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value != null)
                return (FullEnum)value;

            else return "";

        }
    }
<ObjectDataProvider x:Key="Enum1"
                    MethodName="GetValues" 
                    ObjectType="{x:Type sys:Enum}">
            <ObjectDataProvider.MethodParameters>
                <x:Type TypeName="local:SubEnum1" />
            </ObjectDataProvider.MethodParameters>
</ObjectDataProvider>

<ListBox Height="261" HorizontalAlignment="Left" Name="mylist" VerticalAlignment="Top" Width="278">
   <ListBox.ItemTemplate>
      <DataTemplate>
          <StackPanel>              
              <ComboBox Height="23" Width="90"                                
                        ItemsSource="{Binding Source={StaticResource Enum1}}"  
                        SelectedValue="{Binding Path=TheSelectedEnum, Converter={StaticResource enumConverter}}"
                        SelectedIndex="0"/> 
          </StackPanel>
      </DataTemplate>
</ListBox.ItemTemplate>     

</ListBox>

screen (Если я разверну другие списки, я увижу значения)

Обновление к сообщению:

Может быть, я смогу как-то еще передать выбранное значение объекту с привязкой?

1 Ответ

1 голос
/ 17 июня 2011

Вы можете сделать это и решить вашу проблему:

public enum SubEnum1 
{           
    None=0,     
    Apple=1,    
    Banana=2,    
    Pear=3 
} 

Затем используйте FallbackValue:

<ComboBox Height="23" Width="90"
    ItemsSource="{Binding Source={StaticResource Enum1}}"
    SelectedValue="{Binding Path=TheSelectedEnum, FallbackValue=0}" /> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...