2011-08-25 61 views
0

我對.Net,C#和WP7很新,但對其工作相同。我需要從後面的代碼(C#)創建一組「按鈕」。每個按鈕都有一個文本塊和一個圖片,但文本塊和圖片源的文本將是差異。爲拉克按鈕。所以我創建了一個具有文本塊和圖像的樣式風格。現在需要在創建按鈕時將TextBlock和imageSource設置爲Image。請幫助我與示例代碼,因爲我想這從過去3天以來,但無法找到解決方案或我的一些基本技術失蹤。背後如何更改用戶定義風格的「源」編程方式

<phone:PhoneApplicationPage.Resources> 
     <Style x:Name="style" x:Key="UnChecked" TargetType="Button" > 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="Button" > 
         <Canvas x:Name="list" > 
          <TextBlock x:Name="Site" **Text=""** TextWrapping="NoWrap" Canvas.Top="104" Width="114" Height="48" Foreground="White" FontWeight="Bold" FontSize="24" VerticalAlignment="Top" CacheMode="BitmapCache" Canvas.Left="16" /> 
          <Image x:Name="Logo" Width="128" Height="104" UseLayoutRounding="True" **Source=""** />        
         </Canvas>       
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </phone:PhoneApplicationPage.Resources> 

//代碼請幫我OR讓我知道如果我做一些錯誤

回答

0

有多種方式,像往常一樣......有一兩件事你可以做,取決於你的需求是。您創建包含您的信息像

public class ButtonInfo 
{ 
    public string Text{get;set;} 
    public BitmapSource Image {get;set;} 
    public ICommand Command{get;set;} 
} 

現在,當您創建按鈕

var btn = new Button(); 
vat info = new ButtonInfo(); 
info.Text ="Some caption"; 
// load an image 
BitmapImage myBitmapImage = new BitmapImage(); 
myBitmapImage.BeginInit(); 
myBitmapImage.UriSource = new Uri(@"C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Water Lilies.jpg"); 
myBitmapImage.EndInit(); 
// set the image 
info.Image = myBitmapImage; 

// set the button info onto our button 

btn.DataContext = info; 

現在你需要修改你的風格有點類

<Canvas x:Name="list" > 
    <TextBlock x:Name="Site" Text="{Binding Text}" /> 
    <Image x:Name="Logo" Width="128" Height="104" Source="{Binding Image}" />        
</Canvas> 

所以我們得到了什麼在這裏做?我們爲我們的按鈕創建了一個對象,其中包含我們按鈕的動態信息到ButtonInfo,創建按鈕時,我們將這些單獨的ButtonInfos設置到按鈕上,現在通過DataBinding,我們將Button中的數據從我們的控件中取出。 我添加了Command屬性,因爲我認爲這將是你可能碰到的下一件事。其中可以固定,加入

<Setter Property="Command" Value="{Binding Command}"/> 

到你的按鈕樣式。

就像我說的,這只是一種方法,imo不是最好的方法。但這可能就足夠了。

另外我需要補充一點,我來自WPF背景,Silverlight中的一些東西可能不同,但我猜這些基本概念是相同的。

希望有所幫助。

+0

感謝您的建議。現在它的工作,但只爲文本框不爲圖像。 – Dheeraj

+0

實際上,Tesblock的文本在rutime正在改變,但對於Image並沒有顯示任何內容。如果你有任何idaea什麼樣的錯誤,請讓我知道 – Dheeraj

+0

謝謝dowhilefor – Dheeraj

相關問題