Флажок WPF не будет отображать UIElement как его содержимое

Я работаю с настраиваемым флажком и пытаюсь установить содержимое в поле просмотра WPF. Проблема в том, что просто ничего не отображается. Флажок появляется и работает, но в нем нет содержимого. Это пример кода (а не фактический код) того, что я пытаюсь сделать.

MyCheckbox myCheckbox = new MyCheckbox();

Viewbox viewbox = new Viewbox();
viewbox.Height = 20;
viewbox.Width = 20;

Label label = new Label();
label.Content = "Test";

viewbox.Child = label;
myCheckbox.Content = viewbox;

Свойство Content принимает объект, поэтому нет проблем с его установкой в ​​поле просмотра, а ContentPresenter может отображать UIElement. Я подумал, что, возможно, ContentPresenter не может отобразить метку, содержащуюся в поле просмотра, поэтому я создал тестовый код, установив содержимое флажка в виде простого прямоугольника. Еще ничего.

Любые мысли или идеи? Спасибо за вашу помощь!

О. Установка свойства Content на строку работает.


person Quentamia    schedule 04.06.2010    source источник


Ответы (1)


Возможно, вам потребуется опубликовать соответствующий XAML вашего пользовательского файла CheckBox. Убедитесь, что у ControlTemplate есть ContentPresenter, и что если у вас есть ContentTemplate, то он не мешает. Пример шаблона можно посмотреть здесь.

Если вы просто хотите изменить внешний вид CheckBox, вы можете заново создать шаблон стандартного CheckBox без написания собственного класса.

person Kris    schedule 04.06.2010
comment
Спасибо за вашу помощь. Я не писал собственный CheckBox и не знал, что они удалили ContentPresenter, заменив его TextBlock. Сомневаюсь, что я бы подумал проверить. Еще раз спасибо! - person Quentamia; 04.06.2010