В проекте есть справочники, вывод осуществляется через DataGrid. Иногда в этих справочниках что-то удаляют, но логика программы их не удаляет совсем, а помечает как удаленные. Простому пользователю нужно отображать просто список элементов справочника, а вот пользователям из группы администраторов нужно отобразить основной список элементов и удаленные. При этом удаленные надо пометить (как вариант цветом). Этот код не работает
Вот код стиля для DataGridRow
<style TargetType="{x:Type DataGridRow}" x:Key="ReferencesDataGridRow">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding DataContext.IsAdmin, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}, Mode=FindAncestor}}" Value="false" />
<Condition Binding="{Binding Path=Deleted}" Value="true" />
</MultiDataTrigger.Conditions>
<Setter Property="Visibility" Value="Collapsed" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding DataContext.IsAdmin, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}, Mode=FindAncestor}}" Value="true" />
<Condition Binding="{Binding Path=Hidden}" Value="true" />
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="Pink" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
В разметке UserControl применение стиля приходится задавать через ресурсы UserControl, так как непосредственно в DataGrid установка стиля DataGridRow приводит к ошибке ArgumentNullException
<UserControl.Resources>
<Style TargetType="{x:Type DataGridRow}" BasedOn="{StaticResource ReferencesDataGridRow}" />
</UserControl.Resources>
DataGrid
<DataGrid x:Name="VendorsGrid" ItemSource="{Binding VendorsList}" SelectedItem="{Binding SelectedVendor}">
<DataGrid.Columns>
...
</DataGrid.Columns>
</DataGrid>
Привязка осуществляется в .cs файле UserControl
DataContext=MainWindowViewModel.This.CurrentDocument;
ViewModel рассматриваемого UserControl
...
public bool IsAdim=>UserConfig.IsAdmin;
public VendorModel SelectedVendor
{
get=>_selectedVendor;
set=>Set(ref _selectedVendor,value);
}
public ObservableCollection<VendorModel>VendorList{get;}
...
Стиль никак не применяется к DataGrid
Собственно вопрос: что не так с разметкой, почему стиль не хочет применяться к DataGrid?
p.s. метод Set() реализует интерфейс INotifyPropertyChanged, который любезно подсказал @VladID
Спасибо
В ходе экспериментов выяснил, что применение стиля через DataGrid.RowStyle вполне работает. Может это только у меня так отработало, но результат есть
<DataGrid>
<DataGrid.RowStyle>
<Style TargetType={x:Type DataGridRow}" BasedOn="{StaticResource ReferenceDataGridRow}" />
</DataGrid.RowStyle>
...
</DataGrid>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
public GameObject canvas;
На C# необходимо получить список вещей в инверторе SteamДля получения пытался использовать Stemworks API и Facepunch Stemworks
Я пытаюсь получить в функции номер текущей недели и года, а затем преобразовать его в формат с русским языком, для чего и добавил перевод месяцев...
Появилась задача, сделать демона, который будет выполнять задачи по расписаниюСначала я думал все эти задачи сохранять в таблицу и демон...