2011-03-10 23 views
1

我已经使用Prism4构建了Silverlight 4应用程序。我在shell.xaml中创建了几个内容区域,一切正常。现在我想要执行以下操作: 在shell.xaml中,我们在布局中有一个标题栏(标签如下所示)。在那里,我们希望根据主要内容区域中显示的视图动态更改标题字符串的值。 任何想法如何以简单的方式完成此任务?Silverlight 4 + Prism将动态字符串添加到外壳中的标题栏

<sdk:Label Content="Should be dynamic" FontWeight="SemiBold" Grid.ColumnSpan="3" Grid.Row="0" Grid.Column="2" BorderThickness="0" Background="{StaticResource DetailHeaderBackground}" ></sdk:Label> 

谢谢!

回答

0

由于我使用的是由棱镜模块现在我做到了这样的出口观点填充PRISM地区:

public static void AddLabelToHeaderRegion(string HeaderName, IRegionManager regionManager) 
    { 
     Label headerLabel = new Label 
     { 
      Content = HeaderName, 
      FontWeight = System.Windows.FontWeights.SemiBold, 
      Background = (System.Windows.Media.Brush)Application.Current.Resources["DetailHeaderBackground"], 
      Padding = new Thickness(30, 3, 0, 3), 
      BorderThickness = new Thickness(0), 
      Margin = new Thickness(0) 

     }; 
     Grid.SetColumn(headerLabel, 2); 
     Grid.SetRow(headerLabel, 0); 
     Grid.SetColumnSpan(headerLabel, 3); 
     IRegion headerBarRegion = regionManager.Regions[RegionNames.HeaderBarRegion]; 
     if (headerBarRegion != null) 
     { 
      foreach (var item in headerBarRegion.ActiveViews) 
      { 
       headerBarRegion.Remove(item); 
      } 

      headerBarRegion.Add(headerLabel); 
     } 
    } 

我可以在任何地方使用这个我通过导入当前区域经理MEF。

0

使用MVVM你连线了标签到底层视图模型,那么当您更改视图只更新属性:底层模型

<sdk:Label 
    Content="{Binding ViewModel.HeaderBarLabelText, Mode=OneWay}" 
    FontWeight="SemiBold" 
    Grid.ColumnSpan="3" 
    Grid.Row="0" 
    Grid.Column="2" 
    BorderThickness="0" 
    Background="{StaticResource DetailHeaderBackground}" > 
</sdk:Label> 

然后,你必须

[ViewModelProperty(null)] 
public int HeaderBarLabelText 
{ 
    get 
    { 
     return _headerBarLabelText; 
    } 
    set 
    { 
     _headerBarLabelText= value; 
     OnPropertyChanged(() => HeaderBarLabelText); 
    } 
} 

它得到如果你的“内容区域”/“视图”是Prism模块,那么更复杂一些,在这种情况下,CodeProject上的Prism教程涵盖了大部分基础。

http://www.codeproject.com/KB/silverlight/PrismTutorial_Part1.aspx

+0

是的区域填充了(MEF-)Prism模块的导出视图。 – hoetz 2011-03-10 12:13:46