Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Base {}
- public class Derived_1 : Base {}
- public class Derived_2 : Base {}
- // more descendants...
- public class Derived_N : Base {}
- public class SomeViewModel
- {
- // available items
- public IEnumerable<Derived_N> SomeItems { get; }
- // currently selected item
- public Derived_N SelectedItem { get; set; }
- // there could be several property pairs as above
- }
- public IEnumerable<Base> ItemsSource
- {
- get { return (IEnumerable<Base>)GetValue(ItemsSourceProperty); }
- set { SetValue(ItemsSourceProperty, value); }
- }
- public static readonly DependencyProperty ItemsSourceProperty =
- DependencyProperty.Register("ItemsSource", typeof(IEnumerable<Base>), typeof(BaseSelector), new PropertyMetadata(null));
- public Base SelectedItem
- {
- get { return (Base)GetValue(SelectedItemProperty); }
- set { SetValue(SelectedItemProperty, value); }
- }
- public static readonly DependencyProperty SelectedItemProperty =
- DependencyProperty.Register("SelectedItem", typeof(Base), typeof(BaseSelector), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
- <myCtrls:BaseSelector ItemsSource="{Binding SomeItems}"
- SelectedItem="{Binding SelectedItem}"/>
- public class DummyConverter : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- return value;
- }
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- return value;
- }
- }
- <myCtrls:BaseSelector ItemsSource="{Binding SomeItems}"
- SelectedItem="{Binding SelectedItem, Converter={StaticResource DummyConverterKey}}"/>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement