#c# #wpf #binding
#c# #wpf #привязка
Вопрос:
У меня есть таблица с разными столбцами, я показываю два в этом коде :
<DataGridTextColumn Header="Allocated" Binding="{Binding Allocated}" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Background">
<Setter.Value>
<MultiBinding Converter="{StaticResource converter}">
<Binding Path="Current_Phase" />
<Binding Path="Status" />
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Op10}" Header="WIP OP10" >
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Background">
<Setter.Value>
<MultiBinding Converter="{StaticResource converter}">
<Binding Path="Current_Phase" />
<Binding Path="Status" />
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
Проблема, с которой у меня есть IConverterClass, заключается в том, что мой IConverterClass возвращает цвет фона и для обоих становится зеленым, но моя текущая фаза «op30» (значение моих параметров), но все еще меняет цвет столбца op10. Я полностью потерян, пожалуйста, помогите.
Мой класс конвертера
object IMultiValueConverter.Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string type = values[0].ToString();
string status = values[1].ToString();
if (type == "op10" amp;amp; status == "10")
{
return Brushes.Green;
}
else if ( type == "op30" amp;amp; status == "30")
{
return Brushes.Green;
}
else
{
return DependencyProperty.UnsetValue;
}
}
Пожалуйста, помогите, я не знаю, что делать.
Ответ №1:
Я не понимаю вашей проблемы:
ваш конвертер возвращает зеленый цвет для «op10» и «op30», и вы привязываете этот конвертер к обоим столбцам, и поэтому он меняет оба столбца на зеленый. Если вы не хотите изменять столбец op10, удалите привязку к конвертеру.
Комментарии:
1. Привет, Дэниел, я не удалил привязку к конвертеру, потому что я также хочу, чтобы столбец op10 был изменен, когда currentPhase равен op10. В принципе, у меня есть два столбца op10 и op30, и я хочу изменить цвет столбцов в соответствии с значением текущей фазы. Вот почему я привязываю оба. Я не знаю другого способа сделать. У вас есть какие-либо другие предложения, пожалуйста?!
2. Итак, вы хотите, чтобы столбец op10 был зеленым, если currentPhase равен op10 и только тогда. Вы хотите, чтобы выделенный столбец был зеленым, только если currentPhase равен op30?
3. Да, это верно!! Нужны ли мне разные классы I converter для каждого столбца?!
4. Либо это, либо вы добавляете третий параметр в конвертер, которому вы передаете постоянное значение. Затем это постоянное значение решает, какой оператор if следует использовать.
5. Огромное спасибо, Дэниел, я передаю значение, выполняя source <MultiBinding Converter=»{StaticResource converter}»> <Путь привязки =»Current_Phase» /> <Источник привязки= «10»></Binding> </MultiBinding>