Я хочу сделать конвертер для высоты строки, который зависит от трех переменных. Два из них - из модели представления, а одна - константа. Для этого я сделал MultiValueConverter, но, очевидно, не устанавливал значение RowDefinition.Height.Multibinding в 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 Рост собственности, но MultiBinding не.
Покажите нам MultiValueConverter. –