#c# #silverlight #xaml #custom-controls
#c# #silverlight #xaml #пользовательские элементы управления
Вопрос:
Вот как OnApplyTemplate
выглядит мой:
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
if (DesignerProperties.IsInDesignTool) return;
this.partTextBox = this.GetTemplateChild(PartTextBox) as TextBox;
this.partButton = this.GetTemplateChild(PartButton) as Button;
if (this.partTextBox == null || this.partButton == null)
{
throw new NullReferenceException("Template part(s) not available");
}
this.partTextBox.LostFocus = this.OnTextBoxLostFocus;
this.partButton.Click = this.OnButtonClick;
if (this.DataProvider == null)
{
throw new NotSupportedException("DataProvider wasn't specified");
}
Вторая строка, в которой я проверяю IsInDesignTool, выдает ошибку, в которой говорится, что я не могу получить доступ к внутреннему классу «DesignerProperties» здесь.
В основном, что происходит, когда я перетаскиваю свой элемент управления с панели инструментов в режим просмотра в design, он выдает исключение, потому что dataProvider не указан. Итак, мне нужно отключить этот код на время разработки.
Как мне это сделать?
Ответ №1:
Возможно, где-то есть другой класс, называемый DesignerProperties, который мешает тому, который вы действительно хотите использовать. Как насчет:
if (System.ComponentModel.DesignerProperties.IsInDesignTool) return;
Комментарии:
1. Да, это сработало! Я проверил — было 4! возможных свойства DesignerProperties!
Ответ №2:
Я думаю, что правильный код,
if (DesignerProperties.GetIsInDesignTool(this)) return;