Dyikot
@Dyikot

Можно ли как-то получить доступ к отображающим элементам ToolBar?

Проблема значит такая. Сделал ItemTemplate для ToolBar в виде Button определенного вида. Но проблема в том что мне требуется подсвечивать текущий элемент(сменить цвет элемента Button). Проблема решается с помощью события нажания на кнопку. Но вот как сделать для первого элемента, который первоначально должен быть подсвечен... Пришла идея лишь обработать событие инициализации кнопки и проверять первая ли эта кнопка... но даже не знаю единственное это решение проблемы или есть другие способы? Просто я уже все свойства ToolBar изучил и так не нашел где хранятся все эти кнопки. Можно ли получить к ним доступ или есть иной путь решения для подсветки первой кнопки?
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ответы на вопрос 3
WNeZRoS
@WNeZRoS
требуется подсвечивать текущий элемент

с помощью события нажания


Лучше не делать таких не явных предположений о текущем элементе, кнопка может быть нажата, но из-за каких-то внутренних условий "текущесть" может не измениться.
Лучше завести во вью модели флаг о том что он текущий и по нему подсвечивать. Проще всего в той же, для которой ItemTemplate с кнопкой написан.

Но если хочется более чистого кода, то можно через RelativeSource вылезти во внешнюю вью модель и сделать проверку через мультибининг с конвертером
<MultiBinding Converter="{StaticResource IsEqualsConverter}">
    <Binding />
    <Binding RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type ToolBar}}" Path="DataContext.CurrentElement" />
</MultiBinding>


Если вдруг под подсветить вы имеете в виде не что-то своё хитрое, а фокус, то можно использовать экстеншен с attached dependency property для установки фокуса. В этом случае для определения первого элемента поможет {RelativeSource Mode=PreviousData} - у первого элемента он будет {x:Null}
Ответ написан
Комментировать
NikFaraday
@NikFaraday
Student full-stack Developer
Вы можете локально сохранять значения на клиенте, это не запрещено. На крайний случай, можете где-то в .тхт файл сохранить. И потом оттуда брать значения.

Я вас понимаю в плане, почему вы это не сделал раньше, но правило стейтлесс относится больше к серверной части, на клиенте это вполне реализуемо
Ответ написан
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
а ToolBar - wpf, winfoms, или иной?
обычно достаточно модификаторов public и у класса, и у члена класса..
если хотите осваивать сокрытие кода, точно не тот уровень..
если осваиваете программирование - пока просто не забывайте public ..
в зависимости от "областей видимости", возможно надо указать класс, а может даже сборку..
а вот эти темы надо впитывать сразу, но и доки по ним более чем )))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы