Как получить доступ к управлению WPF, расположенному в ControlTemplate?

Я не вижу никаких проблем с этим, но вы можете лучше использовать Spring, чтобы сделать это для вас в своем API отдыха.

В Spring вы можете использовать @RestControllerAdvice и @ExceptionHandler, чтобы перехватить любое исключение и вернуть приятное сообщение для пользователя. Нравится:

@Slf4j
@RestControllerAdvice
public class ErrorHandlerController {

    @ExceptionHandler(CustomException.class)
    public ResponseEntity<ApiErrorResponse> handleApiException(CustomException ex, Locale locale) {
        log.error("Custom error catch with the code {}", ex.getErrorCode(), ex);
        ApiErrorResponse error = new ApiErrorResponse(ex, locale);
        return new ResponseEntity<>(error, ex.getHttpStatus());
    }
}
24
задан Dave Clemmer 29 July 2011 в 18:01
поделиться

2 ответа

Вы можете использовать метод FindName () класса ControlTemplate.

// Finding the grid that is generated by the ControlTemplate of the Button
Grid gridInTemplate = (Grid)myButton1.Template.FindName("grid", myButton1);
33
ответ дан 28 November 2019 в 23:47
поделиться

Я не уверен в том, что вы спрашиваете, поэтому я постараюсь ответить на оба случая, которые я интерпретирую как ваш вопрос.

1) Если вы хотите объявить явный элемент управления, а затем отредактировать его напрямую, все, что вам нужно сделать, это установить свойство name следующим образом:

<Canvas x:Name="myCanvas"/>

Затем вы можете получить доступ к холсту через Имя как таковое:

myCanvas.Background = Brushes.Blue;

2) Если вы хотите объявить универсальный элемент управления, а затем использовать его несколько раз, вы можете сделать это следующим образом:

<Window>
   <Window.Resources>
      <Ellipse x:Key="myEllipse" Height="10" Width="10">
   </Window.Resources>
</Window>

Затем вы можете получить доступ к этому предопределенному элементу управления, используя этот синтаксис в коде:

Ellipse tempEllipse = (Ellipse)FindResource("MyEllipse");

Если вы хотите использовать В качестве шаблона для нескольких элементов управления добавьте x: Shared = "false".

4
ответ дан 28 November 2019 в 23:47
поделиться
Другие вопросы по тегам:

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