#c# #this #contentcontrol
#c# #это #contentcontrol ( контроль содержимого )
Вопрос:
Я пытаюсь внедрить XAML в CS. Это удалось, но только 1 вещь, которую я не могу решить, а именно: преобразовать это в ContentControl.
object parent = this;
MessageBoxEx.SetParentWindow(this);
Родительские окна должны быть установлены, в противном случае я получаю нулевую ссылку.
Кто-нибудь может мне помочь?
Найдено решение
public void InitMessageBox()
{
// Create the ElementHost control for hosting the
// WPF UserControl.
ContentControl host = new ContentControl();
host.DataContext = this;
//host.Dock = DockStyle.Fill;
// Create the WPF UserControl.
MessageBoxEx uc =
new MessageBoxEx();
// Assign the WPF UserControl to the ElementHost control's
// Child property.
//host.Parent = this;
//host.Child = uc;
// Add the ElementHost control to the form's
// collection of child controls.
//this.Controls.Add(host);
// p = (ContentControl) this;
MessageBoxEx.SetParentWindow(host);
MessageBoxEx.SetMessageForeground(Colors.White);
MessageBoxEx.SetMessageBackground(Colors.Black);
MessageBoxEx.SetButtonBackground(MessageBoxEx.ColorFromString("#333333"));
MessageBoxEx.SetButtonTemplateName("AefCustomButton");
MessageBoxEx.SetMaxFormWidth(600);
MessageBoxEx.SetErrorDelegate(new ErrorMsgDelegate());
// if you want to make the MessageBoxEx silent when you use icons, uncomment the next line
//MessageBoxEx.SetAsSilent(true);
}
Комментарии:
1. Мне нужно немного больше кода, я думаю. Является
this
производным отWindow
? Вы настроилисьparent
наthis
— почему? Вы смотрели на этот пример?2. Я посмотрел на пример, и ему нужны окна в классе, но если я получаю из Windows, конструктор форм больше не работает. Родительский элемент был this в методе и попытался установить ContentControl с помощью приведения к ContenControl parent = (ContentControl) this; Но получите незаконное приведение. Есть ли способ преобразовать это в contentcontrol.
3. Вы создаете приложение WPF или приложение Windows Forms?
4. Приложение Windows Forms. Источник XAML взят из codeproject и находится по ссылке в сообщении. Я должен посмотреть, как я могу разместить здесь больше строк кода.
Ответ №1:
Я этого не делал, но вы должны следовать специальной процедуре, чтобы использовать элемент управления WPF с Windows Forms. Пожалуйста, посмотрите эту ссылку: используйте элементы управления WPF в приложениях Windows Forms
Комментарии:
1. Привет @Джефф, я не знаю, как опубликовать код здесь в комментариях. Может быть, ответить на ваш вопрос?
Ответ №2:
Я нашел некоторый код:
public void InitMessageBox()
{
// Create the ElementHost control for hosting the
// WPF UserControl.
ElementHost host = new ElementHost();
host.Dock = DockStyle.Fill;
// Create the WPF UserControl.
MsgBoxEx.MessageBoxEx uc =
new MsgBoxEx.MessageBoxEx();
// Assign the WPF UserControl to the ElementHost control's
// Child property.
host.Parent = this;
host.Child = uc; // Error
// Add the ElementHost control to the form's
// collection of child controls.
this.Controls.Add(host); // host = error
// p = (ContentControl) this;
MessageBoxEx.SetParentWindow(uc);
MessageBoxEx.SetMessageForeground(Colors.White);
MessageBoxEx.SetMessageBackground(Colors.Black);
MessageBoxEx.SetButtonBackground(MessageBoxEx.ColorFromString("#333333"));
MessageBoxEx.SetButtonTemplateName("AefCustomButton");
MessageBoxEx.SetMaxFormWidth(600);
MessageBoxEx.SetErrorDelegate(new ErrorMsgDelegate());
// if you want to make the MessageBoxEx silent when you use icons, uncomment the next line
//MessageBoxEx.SetAsSilent(true);
}
Этот код, который у меня есть из Интернета, но не работает
Комментарии:
1. Пожалуйста, отредактируйте свой вопрос вместо того, чтобы писать ответ.
2. Извините, не знаком с переполнением стека