Мой IconverterClass изменяет значения для всех моих столбцов

#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>