사용자 정의 사용자 컨트롤을 대화 상자로 표시하는 방법은 무엇입니까?
C#/WPF(.NET 3.5)에서 사용자 지정을 대화 상자로 표시하는 방법은 무엇입니까?
창에 배치하고 창을 호출합니다.ShowDialog. (또한 PresentationCore, WindowsBase 및 PresentationFramework(아직 참조하지 않은 경우)에 참조를 추가합니다.)
private void Button1_Click(object sender, EventArgs e)
{
Window window = new Window
{
Title = "My User Control Dialog",
Content = new MyUserControl()
};
window.ShowDialog();
}
Window window = new Window
{
Title = "My User Control Dialog",
Content = new OpenDialog(),
SizeToContent = SizeToContent.WidthAndHeight,
ResizeMode = ResizeMode.NoResize
};
window.ShowDialog();
내게 마법처럼 작용했습니다.모달 대화로 만들 수 있습니까?
Ans : ShowDialog 자체를 ModalDialog로 만듭니다...
제가 알기로는 그렇게 할 수 없습니다.대화 상자에 표시하려면 UserControl만 포함된 새 창을 만들고 해당 창 인스턴스를 만든 후 ShowDialog()를 호출하면 됩니다.
편집: 클래스에 ShowDialog 메서드가 포함되어 있지 않으므로 수행하려는 작업은 실제로 불가능합니다.
그러나 이는 다음과 같습니다.
private void Button_Click(object sender, RoutedEventArgs e){
new ContainerWindow().ShowDialog();
}
namespace System.Window.Form
{
public static class Ext
{
public static DialogResult ShowDialog(this UserControl @this, string title)
{
Window wind = new Window() { Title = title, Content = @this };
return wind.ShowDialog();
}
}
}
UserControlInstance처럼 쉽게 사용할 수 있습니다.ShowDialog().더 나은 사용자 정의 구현은 Window 클래스를 확장하고 디자이너와 코드를 사용하여 모든 기능을 사용자 정의하는 것입니다.
.net 3.5용인 것은 알지만 여기 .net 2.0용으로 사용 가능한 솔루션이 있습니다.
MyUserControl myUserControl= new MyUserControl();
Form window = new Form
{
Text = "My User Control",
TopLevel = true,
FormBorderStyle = FormBorderStyle.Fixed3D, //Disables user resizing
MaximizeBox = false,
MinimizeBox = false,
ClientSize = myUserControl.Size //size the form to fit the content
};
window.Controls.Add(myUserControl);
myUserControl.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
window.ShowDialog();
재료 설계를 사용할 수도 있습니다.Themes.Wpf(NuGet, .NET 4.5+에서 다운로드 가능).그러면 간단하게 다음을 수행할 수 있습니다.
{
var view = new YourUserControl();
var result = await DialogHost.Show(view, "RootDialog", ClosingEventHandler);
}
private void ClosingEventHandler(object sender, DialogClosingEventArgs eventArgs)
{ } //Handle Closing here
여섯 글자 변수'에 의한 답을 그렇게 수정하면 작동합니다.
private void button1_Click ( object sender, RoutedEventArgs e )
{
Window window = new Window
{
Title = "My User Control Dialog",
Content = new UserControl ( ),
Height = 200, // just added to have a smaller control (Window)
Width = 240
};
window.ShowDialog ( );
}
언급URL : https://stackoverflow.com/questions/1262115/how-do-you-display-a-custom-usercontrol-as-a-dialog
'programing' 카테고리의 다른 글
Angular zone 외부에서 트리거된 탐색입니다. 'ngZone.run()'을 호출하는 것을 잊으셨습니까? (0) | 2023.05.04 |
---|---|
장치를 컴파일할 때 Apple Mach-O 링커 오류 발생 (0) | 2023.05.04 |
xcode 활성 개발자 디렉토리 선택 오류 (0) | 2023.05.04 |
UIImageView의 UIGesture 인식기 (0) | 2023.04.29 |
... 값에 삽입(SELECT ... FROM ... ) (0) | 2023.04.29 |