У меня есть Combobox и DataGrid. Я хочу, чтобы иметь возможность выбирать значение в Combobox (SelectedItem - привязка данных к свойству ViewModel). Если значение ячейки определенного столбца в DataGrid соответствует значению combobox, я хочу изменить цвет границы всей строки. Я нашел способы изменить цвет границы DataGrid с помощью конвертера, но ConverterParameter не может быть привязан к свойству SelectedItem, потому что это не DependancyProperty или DependancyObject. Любые идеи относительно того, как я могу это сделать? Благодаря!Изменить цвет границы DataGrid на основе свойства в ViewModel
ответ
Использование мульти-связывания с преобразователем многозначного в DataTriggers
из ваших DataGridRow.Style
:
Xaml:
<Window.Resources>
<local:MultiConverter x:Key="multiConv"/>
</Window.Resources>
...
<DataGrid ItemsSource="{Binding ViewModel.MyList}" >
<DataGrid.RowStyle >
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Value="true">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource multiConv}">
<Binding Path="ColorColumn" />
<Binding Path="ViewModel.SelectedColor" RelativeSource="{RelativeSource Mode=FindAncestor,
AncestorType=Window}"/>
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="BorderBrush" Value="Red" />
<Setter Property="BorderThickness" Value="1" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>
<ComboBox ItemsSource="{Binding ViewModel.ColorList}"
SelectedItem="{Binding ViewModel.SelectedColor}"/>
Multi-значение преобразователя:
public class MultiConverter : IMultiValueConverter
{
public object Convert(
object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values[0] is MyColorType &&
values[1] is MyColorType &&
// if ComboBox.SelectedColor == CurrentDataGridRow.ColorColumn
(MyColorType)values[0] == (MyColorType)values[1])
return true;
return false;
}
public object[] ConvertBack(
object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
Я также нашел этот метод после того, как я разместил исходный вопрос. Вместо этого было добавлено свойство Brush для ViewModel для записи и привязка значения параметра setter для BorderBrush к этому новому свойству, которое казалось более простым способом выполнить задание. Я, скорее всего, изменю его на этот метод, когда у меня есть дополнительное время. Спасибо @Bahman_Aries !! – Paul
приветствую :) –
- 1. изменить цвет строки DataGrid
- 2. изменить цвет границы на заказ цвет
- 3. Цвет строки строки Datagrid на основе значения
- 4. Изменение свойства элемента вида на основе изменения свойства ViewModel
- 5. Изменить цвет границы UITableViewCell на выбор
- 6. Изменить цвет границы JTabbedPane
- 7. Как изменить цвет ячейки в WPF DataGrid на основе свойства объекта в itemsource?
- 8. Как изменить DataTemplate настраиваемого типа на основе свойства ViewModel?
- 9. Смена кистей на основе свойства ViewModel
- 10. Изменить цвет границы NSTextField
- 11. Изменить цвет границы UITextField
- 12. Изменить цвет границы UISegmentedControl
- 13. Как изменить цвет фона ячейки DataGrid на основе значения ячейки
- 14. Отключить строки XamDataGrid на основе значения свойства в ViewModel
- 15. Условное форматирование ячейки GridControl на основе значения свойства в viewmodel
- 16. Изменить цвет границы и ссылку на зависание
- 17. Изменить цвет пунктирной границы на кнопке
- 18. Изменить цвет границы JTextField, не изменяя другие свойства?
- 19. Javascript: изменить цвет границы на элемент изображения?
- 20. Цвет строки WPat Datagrid на основе значения
- 21. Изменить цвет границы на проверку текстового поля
- 22. Изменить цвет границы для DatePicker
- 23. Цвет строки DataGrid на основе значения DataTable
- 24. Graphviz: Как изменить цвет границы
- 25. Изменить цвет границы текстового ввода
- 26. изменить цвет ячеек в easyui datagrid
- 27. Как изменить цвет границы p-dataTable?
- 28. Изменить цвет текста DataGrid Cell при изменении значения связанного свойства
- 29. Цвет границы на ImageView
- 30. Флот-карта - изменить цвет границы
Почему бы не использовать Javascript .. ..собенно JQuery? – code
Это настольное приложение WPF. – Paul
Извините, я должен был прочитать теги – code