我对.Net,C#和WP7很新,但同样如此。我需要从后面的代码(C#) 创建一个“按钮” 数组。每个按钮都有一个文本块和一个图片,但Textblock和图片源的文本将是diff。对于rach按钮。所以我创建了一个具有文本块和图像的样式。现在需要在创建按钮时将文本设置为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>
//代码隐藏
请帮助我或让我知道如果我犯了一些错误
答案 0 :(得分: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,我们将ButtonInfo中的数据导入到我们的控件中。
我添加了Command属性,因为我认为这将是你可以解决的下一个问题。哪个可以修复,添加
<Setter Property="Command" Value="{Binding Command}"/>
按钮样式。
就像我说的,这只是一种方法,而不是最好的方式。但这可能就足够了。
另外我需要补充一点,我来自WPF背景,有些东西可能在silverlight中有所不同,但我猜这些基本概念都是一样的。
希望有所帮助。