Я хочу сделать конвертер для высоты строки, который зависит от 3 переменных.Два из них от модели представления, и один - постоянная строка.Я сделал MultiValueConverter для этого, но, очевидно, он не устанавливает значение RowDefinition.Height.
Код выглядит следующим образом:
<RowDefinition Name="Row1">
<RowDefinition.Height>
<MultiBinding Converter="{StaticResource MyConverter}">
<Binding Path="PropertyFromViewModel1" />
<Binding Source="{StaticResource DataGridName}" />
<Binding Path="PropertyFromViewModel2" />
</MultiBinding>
</RowDefinition.Height>
</RowDefinition>
Преобразователь работает, возвращает правильные значения (в виде строк).
Код для многозначного преобразователя:
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (!((values[0]) is bool))
throw new ArgumentException("First argument 'value' must be of type bool");
if (values[1] == null)
throw new ArgumentException("Secound argument must be diffrent then null");
if (!((values[2]) is bool))
throw new ArgumentException("Third argument 'value' must be of type bool");
var showParkedTransactionDataGrid = (bool)values[0];
var datagridName = values[1].ToString();
var isCustomerDiscountShowed = (bool)values[2];
if (showParkedTransactionDataGrid)
{
if (datagridName == "ProductListDataGrid")
{
return isCustomerDiscountShowed ? "306" : "336";
}
else if (datagridName == "ParkedTransactionDataGrid")
{
return "*";
}
}
else
{
if (datagridName == "ProductListDataGrid")
{
return "*";
}
else if (datagridName == "ParkedTransactionDataGrid")
{
return "0";
}
}
return "";
}
Я использовал до IValueConverter, и он работал со свойством RowDefinision Height, но multibinding нет.