다형성을 사용하는 객체를 편집하기위한 대화 상자를 만들고 싶습니다.그런 대화 상자를 만들기 위해 어떤 디자인 패턴을 사용해야합니까?
MyObject.cs :
using System;
namespace WpfApplication3
{
public class MyObject
{
public string Title { get; set; }
public MySettings Settings { get; set; }
}
public abstract class MySettings
{
public abstract string GetSettingsString();
}
public class MyBoolSettings : MySettings
{
public bool BoolSetting { get; set; }
public override string GetSettingsString()
{
return "BoolSetting = " + BoolSetting;
}
}
public class MyStringSettings : MySettings
{
public string StringSetting { get; set; }
public override string GetSettingsString()
{
return "StringSetting = " + StringSetting;
}
}
}
MainWindow.xaml :
<Window x:Class="WpfApplication3.EditMyObjectDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="EditMyObjectDialog" Height="350" Width="350">
<StackPanel Margin="20">
<TextBlock Text="Title" />
<TextBox Name="txtTitle" />
<RadioButton Name="rdBoolSettings" Content="BoolSettings" IsChecked="True" Margin="0, 20, 0, 0" />
<CheckBox Name="chBool" Content="True" Margin="20, 0, 0, 20" />
<RadioButton Name="rdStringSettings" Content="StringSettings" />
<TextBox Name="txtString" Margin="20, 0, 0, 20"/>
<Button Content="OK" Click="OK_click" />
<Button Content="Cancel" Click="Cancel_click" Margin="0, 10" />
</StackPanel>
</Window>
MainWindow.xaml.cs를 : 현재 나는이 패턴을 사용하고
using System.Windows;
namespace WpfApplication3
{
public partial class EditMyObjectDialog : Window
{
public MyObject Result { get; set; }
public EditMyObjectDialog(MyObject objectToEdit)
{
InitializeComponent();
txtTitle.Text = objectToEdit.Title;
if (objectToEdit.Settings is MyBoolSettings)
{
rdBoolSettings.IsChecked = true;
chBool.IsChecked = (objectToEdit.Settings as MyBoolSettings).BoolSetting;
}
if (objectToEdit.Settings is MyStringSettings)
{
rdBoolSettings.IsChecked = true;
txtString.Text = (objectToEdit.Settings as MyStringSettings).StringSetting;
}
}
private void OK_click(object sender, RoutedEventArgs e)
{
Result = new MyObject() { Title = txtTitle.Text };
if (rdBoolSettings.IsChecked == true)
Result.Settings = new MyBoolSettings() { BoolSetting = chBool.IsChecked == true };
if (rdStringSettings.IsChecked == true)
Result.Settings = new MyStringSettings() { StringSetting = txtString.Text };
DialogResult = true;
}
private void Cancel_click(object sender, RoutedEventArgs e)
{
DialogResult = false;
}
}
}
(210)
ExternalCode : 나는 데이터 등 바인딩 그러니까 기본적으로 나는 두 가지 질문을 사용하여 더 나은 디자인 패턴이 믿지
var f = new EditMyObjectDialog(myObject);
if (f.ShowDialog() == true)
myObject = f.Result;
.
- 에 데이터 바인딩을 설정하는 방법은 사용자가 '확인'을 누를 때까지 개체를 수정 하시겠습니까?
- '설정' 속성을 올바르게 처리하는 방법은 무엇입니까? 사용자 이 설정 유형을 전환 할 때 수행 할 작업은 무엇입니까?
, 패턴을 사용의 이점은 쉽게 당신이 참조하는 패턴을 알고있는 다른 개발자에 걸쳐 정보를 얻을 수 있다는 것입니다. 당신은 "나는이 * 패턴을 사용 중입니다."라고 말하지만 어느 것을 지정하지는 마십시오. 이로 인해 모든 코드를 읽으면서 알아낼 수 있습니다. 새로운 패턴을 발명했거나, 패턴을 실제로 사용하지 않거나, 어느 패턴이 좋다고 생각 하는지를 알려줌으로써 더 좋은 점을 얻을 수 있습니다. – Ocelot20
ok는 실제로 '패턴'이 실제로 무엇을 의미하는지 이해하지 못했던 것처럼 보입니다. 내 의미는 "내 실제 코드는 아래의 간단한 예제와 비슷합니다."입니다. – Poma
사용자가 확인을 눌렀을 때만 객체에 데이터를 바인딩하는 방법을 찾았습니까? – Novice