Преобразователь значений - это элемент, за которым вы работаете, при условии, что у вас больше 0 и 1 для уровня (иначе вы бы использовали логическое право?)
Вот преобразователь значения: -
[ContentProperty("Items")]
public class IndexToObjectConverter : IValueConverter
{
private readonly ObservableCollection<object> myCol = new ObservableCollection<object>();
public ObservableCollection<object> Items { get { return myCol; } }
#region IValueConverter Members
public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return Items[(int)value];
}
public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException("This converter only works for one way binding");
}
#endregion
}
В ресурсах usercontrol у вас будет это: -
<UserControl.Resources>
<local:IndexToObjectConverter x:Key="LevelToImage">
<BitmapImage />
<BitmapImage UriSource="Test.png" />
</local:IndexToObjectConverter>
</UserControl.Resources>
Теперь вы можете привязать свойство Source
элемента управления Image следующим образом: -
<Image Source="{Binding Level, Converter={StaticResource LevelToImage}}" />
Теперь, когда вы изобретаете новые номера уровней, вы можете добавлять элементы в конвертер.
Кстати, у вас, похоже, есть TextBlock
и Image
внутри Button
. Button
может содержать только один объект, поэтому вам нужно обернуть эти два элемента внутри какой-либо панели, например Grid
.