2013-08-27 2 views
0

Я создаю расширение для приложения, вот моя проблема.Add View to Main User Сложность управления

Существует основная страница макета XAML, и это связывается с основными приложениями источника данных (то есть вы можете использовать различные макеты на приложении)

Я создал вид, что я хотел бы разместить на этой странице макета. У моего представления есть своя собственная модель представления, которая устанавливается после того, как «инструмент» будет нажат в приложении.

Это DataSource для макета в свяжется основного приложение

<Grid d:DataContext="{Binding Source={StaticResource ViewerDataSource}}"> 

С отладкой она попадет мой ViewModel каждый раз, но никогда не обновляет ничего.

добавить свой взгляд на основной раскладке как

<!--Begin Custom Tab Item--> 
        <sdk:TabItem Name="StatisticsTabItem" Cursor="Hand" Visibility="Visible"> 
         <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="20" /> 
           <RowDefinition Height="*" /> 
          </Grid.RowDefinitions> 

          <!-- Add Stats view here--> 
          <views:StatisticsView x:Name="StatsView" DataContext="{Binding BindsDirectlyToSource=True}" Grid.Row="1"/> 
         </Grid> 
        </sdk:TabItem> 

Так в настоящее время он устанавливает метку на мой взгляд, каждый раз, и установить его правильно, но ничего не обновляется по фактической точки зрения в рамках основного макета XAML

я создал свой лейбл, как

private string totalPop; 
    public string TotalPop 
    { 
     get { return totalPop; } 
     set 
     { 
      if (totalPop != value) 
      { 
       totalPop = value; 
       OnNotifyPropertyChanged("TotalPop"); 
      } 
     } 
    } 

<sdk:Label x:Name="lbltotPop" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Content="{Binding TotalPop}" /> 

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

ответ

0

Задайте свойство DataContext вашего представления в главном макете XAML, где создается ваше представление (это позволит избежать наложения вашего представления DataContext из его родителя).

Еще одна вещь, которую вам следует избегать - использовать пространство имен «d:» для свойства DataContext. Обычно это пространство имен используется для Design DataContext (надеюсь, это не тот, который вы здесь задаете, я думаю).

+0

Его создатель приложения, и я только создаю расширение, которое вписывается в макет компоновщика приложений. Он уже запрограммирован как d: DataContext, должен ли я удалить d? – JcMey3r

+0

Поместите точку останова на строку И посмотрите, инициализирован ли DataContext и указывает на правильный экземпляр объекта (проверьте свойство FinalSource в окне Debug Locals). D: DataContext используется для установки экземпляра DataContext проекта, а не среды выполнения. Проверьте http://msdn.microsoft.com/en-us/library/ff602277(v=vs.95).aspx. Кроме того, вы можете установить привязку, используя только {StaticResource ViewerDataSource} вместо {Binding ... Source = {StaticResource ...}} – tmoreira

+0

Я добавил свою собственную модель представления на основной макет и посмотрел на отладчик, все правильно теперь связано ... Теперь единственная проблема заключается в том, что измененное свойство остается неопределенным все время, даже несмотря на то, что оно правильно обновляется и т. д. – JcMey3r