2011-01-06 3 views
0

현재 프로젝트에서 탭 기반 탐색을 만들어야합니다. 모듈을 클릭 할 때마다 새로 작성된 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; 
    } 

} 

내가 뭘 잘못하고 있니? 도와주세요

미리 감사드립니다.

+0

대부분의 문제와 관련없는 대부분의 코드. 코드의 중요한 부분은 존재하지 않는 ta_Class_Form 용 Xaml입니다. – AnthonyWJones

+0

더 많은 조사가 끝나면 SilverLight Toolkit 테마와 관련된 문제임을 발견했습니다. 프로젝트에서 테마를 비활성화 한 후에 모두 예상대로 실행됩니다. – adaoss

답변

0

더 많은 조사가 끝나면 SilverLight Toolkit Themes와 관련된 문제임을 발견했습니다.

프로젝트에서 테마 사용을 중지했지만 더 이상 오류가 없습니다.

감사합니다.

관련 문제