Я пытаюсь использовать Multibinding в сочетании с конвертером со свойством Button и свойством Width в XAML, но не могу заставить его работать.
Преобразователь:
public class ColumnsToWidthConverter: IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return 40;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Сейчас он жестко задан для 40, для целей тестирования.
Определение XAML:
<Button
Height="{Binding ElementName=root,Path=KeyHeight}"
FontSize="{Binding FontSize}"
Content="{Binding Display}"
Command="{Binding ElementName=root, Path=Command}"
CommandParameter="{Binding}"
Style="{StaticResource SelectedButton}">
<Button.Width>
<MultiBinding Converter="{StaticResource ColumnsToWidthConverter}">
<Binding Path="Columns"/>
<Binding Path="KeyHeight" ElementName="root"/>
</MultiBinding>
</Button.Width>
</Button>
Кнопка отрисовывается от ListView
и определяется в ListView.ItemTemplate
.При отладке приложения конвертер передается и возвращается значение 40.Параметр object[] values
содержит правильные значения, переданные в путях MultiBinding.Однако ширина кнопки задается для ее содержимого, а не для 40, как в примере выше.
ColumnsToWidthConverter
определен в родительском ListView.Resources
<converter:ColumnsToWidthConverter x:Key="ColumnsToWidthConverter"/>
КогдаЯ удаляю MultiBinding и устанавливаю для свойства Width значение 40 в определении XAML, кнопка отображается правильно.
Элемент root
- это сам пользовательский контроль, а KeyHeight
- это DependencyProperty
.
Как мне установить ширину кнопки с помощью мультисвязи?