현재 프로젝트에서 탭 기반 탐색을 만들어야합니다. 모듈을 클릭 할 때마다 새로 작성된 TabControl
이 열리지 만 그렇지 않은 경우 열립니다.Silverlight 속성에 대한 속성 값이 잘못되었습니다. 표시
HyperlinkButton link = (sender as HyperlinkButton);
string _name = "TAB_" + link.Name;
TabItem tabItem = (from TabItem item in TabControlID.Items
where item.Name.Equals(_name)
select item).FirstOrDefault();
if (tabItem == null)
{
tabItem = new TabItem();
tabItem.Header = link.Content;
tabItem.Name = _name;
tabItem.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
tabItem.VerticalAlignment = System.Windows.VerticalAlignment.Stretch;
switch (link.Name.ToString().ToLower())
{
case "taclass":
taClass_List taclass_list = new taClass_List();
tabItem.Content = taclass_list;
break;
}
TabControlID.Items.Add(tabItem);
tabItem.UpdateLayout();
TabControlID.UpdateLayout();
}
TabControlID.SelectedItem = tabItem;
이 예상대로 작동, 모든 탭은 데이터 그리드가 표시됩니다 (샘플 taClass_List
) 관련된 UserControl
을 가지고 있습니다 :이 같은 코드를 사용하여이를 달성합니다. 새 레코드 추가, 엑셀로 내보내기, 데이터 인쇄, 레코드 편집 및 레코드 삭제와 같은 몇 가지 버튼을 통해 데이터를 관리 할 수 있습니다. taClass_List
의 코드는 내가 새로운 기록 추가 버튼을 클릭하면, btAdd_Click 함수가 호출
public partial class taClass_List : UserControl
{
private CespDomainContext _context = new CespDomainContext();
/// <summary>
///
/// </summary>
public taClass_List()
{
InitializeComponent();
LoadOperation<ta_Class> loadOp = this._context.Load(this._context.GetTa_ClassQuery());
MainGrid.ItemsSource = loadOp.Entities;
MainPager.Source = loadOp.Entities;
}
/// <summary>
/// s
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void saveChanges()
{
_context.SubmitChanges(OnSubmitCompleted, null);
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void rejectChanges()
{
_context.RejectChanges();
CheckChanges();
}
/// <summary>
///
/// </summary>
private void CheckChanges()
{
EntityChangeSet changeSet = _context.EntityContainer.GetChanges();
bool hasChanges = _context.HasChanges;
}
/// <summary>
///
/// </summary>
/// <param name="so"></param>
private void OnSubmitCompleted(SubmitOperation so)
{
if (so.HasError)
{
MessageBox.Show(string.Format("Submit Failed: {0}", so.Error.Message));
so.MarkErrorAsHandled();
}
CheckChanges();
}
(...)
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btAdd_Click(object sender, RoutedEventArgs e)
{
taClass_Form objform = new taClass_Form();
objform.IsTabStop = true;
objform.IsHitTestVisible = true;
objform.DataContext = _context;
objform.UpdateLayout();
objform.Closed += new EventHandler(objform_Closed);
objform.Show();
//MainPage.showWindow(objform);
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void objform_Closed(object sender, EventArgs e)
{
taClass_Form objform = (taClass_Form)sender;
if (objform.MainObject != null)
{
//MainDataSource.DataView.Add(objform.MainObject);
//MainDataSource.SubmitChanges();
}
objform = null;
}
}
이, Childwindow가 나타납니다 그러나 나는 (지금까지)
Invalid attribute value for property Visibility
at MS.Internal.XcpImports.VisualStateManager_GoToState(Control reference, String StateName, Boolean useTransitions, Boolean& refreshInheritanceContext)
at System.Windows.VisualStateManager.GoToState(Control control, String stateName, Boolean useTransitions)
at System.Windows.Controls.ValidationSummary.UpdateCommonState(Boolean useTransitions)
at System.Windows.Controls.ValidationSummary.ValidationSummary_IsEnabledChanged(Object sender, DependencyPropertyChangedEventArgs e)
at System.Windows.Controls.Control.OnIsEnabledChanged(Control control, EventArgs args)
at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
taClass_Form 코드는 오류 메시지가 나타날 수 있습니다 :
public partial class taClass_Form : ChildWindow
{
public ta_Class MainObject = null;
public taClass_Form()
{
InitializeComponent();
}
private void OKButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = false;
}
}
내가 뭘 잘못하고 있니? 도와주세요
미리 감사드립니다.
대부분의 문제와 관련없는 대부분의 코드. 코드의 중요한 부분은 존재하지 않는 ta_Class_Form 용 Xaml입니다. – AnthonyWJones
더 많은 조사가 끝나면 SilverLight Toolkit 테마와 관련된 문제임을 발견했습니다. 프로젝트에서 테마를 비활성화 한 후에 모두 예상대로 실행됩니다. – adaoss