Поскольку я не могу изменить курсор элемента управления через триггер, если он отключен, я создал отдельную прозрачную рамку без курсора, который будет отображаться поверх элемента управления, если когда-либо был отключен первый элемент.
Я хотел сократить свой код, поэтому я создал собственный стиль рамки, определяющий все, что мне нужно, и хотел применить его к каждой необходимой границе отмены, НО проблема в том, что он опирается на триггер данных, указывающий на имя элемента управления, отключенного для чтобы он появился, и теперь моя проблема в том, как лучше всего сказать стилю «проверить элемент управления в пределах сетки и проверить, включен ли он / отключен».
То, что я пробовал до сих пор, - это просто создать несколько триггеров данных, указывающих на имена элемента управления, но найти его немного беспорядочным. Кроме того, я хотел, чтобы это использовалось для всего приложения, поэтому было бы хорошо, если бы я мог просто создать рамку и применить стиль, не переходя к реальному стилю и не создавая еще один триггер.
Другое решение, которое я имею в виду, состоит в том, чтобы зарегистрировать все необходимые элементы управления для события IsEnabled_Changed, выполнить поиск по одному из них и установить видимость последнего в зависимости от статуса первого IsEnabled.
Вот пример стиля:
<Style x:Key="CancelBorder_Style" TargetType="Border">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="CornerRadius" Value="{DynamicResource GlobalCornerRadius}"/>
<Setter Property="Cursor" Value="No"/>
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=MiddleNameTB,Path=IsEnabled}" Value="False">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
Вот пример границы и ее родного брата:
<Grid Style="{DynamicResource RegCtrlGrid_Style}" >
<TextBox x:Name="MiddleNameTB" />
<Border Style="{DynamicResource CancelBorder_Style}"/>
</Grid>