2012-01-20 90 views
2

我在我的表單中有2個文本塊。 是這樣的:將textblock內容設置爲來自設置的字符串

<TextBlock Name="applicationname" Text="{binding applicationname?}"/> 
<TextBlock Name="applicationname" Text="{binding settings.stringVersionNumber}"/> 

我想設置第一個TextBlock的內容自動顯示應用程序的名稱,另一個顯示保存在應用程序中設置一個字符串..

,我應該改變值使用「wpf代碼隱藏」或者我可以直接在xaml中綁定文本塊?

回答

5

您可以將數據綁定到靜態屬性,包括應用程序設置,直接在XAML:

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:l="clr-namespace:WpfApplication1" 
     xmlns:p="clr-namespace:WpfApplication1.Properties" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <StackPanel> 
      <TextBlock Text="{Binding Source={x:Static l:MainWindow.AssemblyTitle}}"/> 
      <TextBlock Text="{Binding Source={x:Static p:Settings.Default}, Path=VersionNumber}"/> 
     </StackPanel> 
    </Grid> 
</Window> 

...其中WpfApplication1是你的命名空間,VersionNumber是在應用程序設置中定義的字符串。

要獲得大會冠軍,我們需要一些代碼隱藏在MainWindow類:

public static string AssemblyTitle 
{ 
    get 
    { 
     return Assembly.GetExecutingAssembly() 
         .GetCustomAttributes(typeof(AssemblyTitleAttribute), false) 
         .Cast<AssemblyTitleAttribute>() 
         .Select(a => a.Title) 
         .FirstOrDefault(); 
    } 
} 

附:您不能將相同的名稱分配給兩個元素。

+0

太好了,非常感謝...有關如何顯示應用程序名稱(未保存在設置中)的任何想法,就像在您的示例中一樣簡單? – lebhero

+0

您的意思是'[assembly:AssemblyTitle]'屬性中給出的值? – Douglas

+0

完全是這個值 – lebhero