2015-07-27 3 views
0

У меня возникла проблема с привязкой данных в пользовательском UserControl.UserControl Содержимое обновляется только при первом отображении

Это довольно много обложек диалогового окна, которое вызывается при нажатии кнопки, если ошибки обнаружены в пользовательских вводах.

В элементе управления у меня есть 2 объекта, кнопка выхода и список строк, содержащий ошибки.

Моя проблема заключается в том, что список пользовательского элемента управления установлен при первом значении диалогов для значения true, а затем после него не обновляется. Я вызываю OnNotifyPropertyChange, когда изменяю список, но он все равно не имеет значения.

My MainContent Раздел XAML UserContent.

<Grid x:Name="Overlay" Panel.ZIndex="1000" Visibility="{Binding Path=ShowOverlay, Converter={StaticResource booltoVis},FallbackValue=Hidden }" Grid.Row="2" Grid.RowSpan="2"> 
     <Grid.Background> 
      <SolidColorBrush Color="Black" Opacity=".5"/> 
     </Grid.Background> 

     <View:UserControl1> 

      <View:UserControl1.MainContent> 
       <ListBox ItemsSource="{Binding Path=Error_Message_List, Mode=TwoWay}" /> 
      </View:UserControl1.MainContent> 

      <View:UserControl1.DialogExitButton> 
       <Button Command="{Binding Path=CloseModalDialogClickCommand}" Content="OK"> 
       </Button> 
      </View:UserControl1.DialogExitButton> 

     </View:UserControl1>  
</Grid> 

Мой Управление учетными связывании XAML

<Grid Margin="5" Background="White"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="0.1*"/> 
     <RowDefinition Height="0.6*"/> 
     <RowDefinition Height="0.2*"/> 
    </Grid.RowDefinitions> 
    <TextBlock Text="Error in script generation!" FontWeight="Bold"/> 
    <ContentControl Content="{Binding MainContent, ElementName=XAMLErrorPopupControl}" Grid.Row="1"/> 
    <ContentControl Content="{Binding DialogExitButton, ElementName=XAMLErrorPopupControl}" Grid.Row="2" Margin="224,0,0,0"/> 
</Grid> 

Мой Управление учетными фоновым кодом

public static readonly DependencyProperty MainContentProperty = 
     DependencyProperty.Register(
      "MainContent", 
      typeof(object), 
      typeof(UserControl1), 
      new FrameworkPropertyMetadata(default(object), 
        FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)); 

    public object MainContent 
    { 
     get { return (object)GetValue(MainContentProperty); } 
     set { SetValue(MainContentProperty, value); OnPropertyChanged("MainContent"); } 
    } 

    public static readonly DependencyProperty DialogExitButtonProperty = 
     DependencyProperty.Register(
      "DialogExitButton", 
      typeof(object), 
      typeof(UserControl1), 
      new UIPropertyMetadata(null)); 

    public object DialogExitButton 
    { 
     get { return (object)GetValue(DialogExitButtonProperty); } 
     set { SetValue(DialogExitButtonProperty, value); OnPropertyChanged("DialogExitButton"); } 
    } 

Любая помощь будет высоко ценится! Ура!

+0

Вы можете показать свою реализацию списка ... это наблюдение, e коллекция –

ответ

0

Первое:Error_Message_List должен быть ObservableCollection<YourItemType>, чтобы иметь возможность уведомить UI, когда элементы добавлены/удалены из списка.

Второе:YourItemType должен реализовать INotifyPropertyChanged уведомить UI, когда элемент из списка получает модифицирована.

+0

Вот и все, Error_Message_List был только списком. Глупая ошибка, я использовал ObservableCollection для всех моих основных коллекций окон ... Спасибо, кучи! – grant90

+0

Добро пожаловать:) –