Как изменить «источник» определенного пользователем стиля Программно - PullRequest
0 голосов
/ 25 августа 2011

Я очень новичок в .Net, C # и WP7, но работаю над тем же.Мне нужно создать массив «кнопок» из кода позади (C #) .Каждая кнопка имеет текстовый блок и изображение, но текст текстового блока и источник изображения будут различаться.для кнопки rach. Итак, я создал стиль, имеющий текстовый блок и изображение.Теперь нужно установить text для TextBlock и imageSource для Image во время создания кнопки.Пожалуйста, помогите мне с примером кода, поскольку я пытаюсь сделать это за последние 3 дня, но не могу найти решение, или mya отсутствует с какой-то базовой техникой.

<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>

// Код позади

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

1 Ответ

0 голосов
/ 25 августа 2011

Как обычно, есть несколько способов ... одна вещь, которую вы можете сделать, в зависимости от ваших потребностей. Вы создаете класс, который содержит вашу информацию, такую ​​как

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 на кнопки, теперь через привязку данных мы получили данные из ButtonInfo в наши элементы управления. Я также добавил свойство Command, потому что я думаю, что это будет следующим, что вы можете запутать в апоне. Что можно исправить, добавив

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

в соответствии с вашим стилем кнопки.

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

Кроме того, мне нужно добавить, что я работаю в фоновом режиме WPF, и в Silverlight некоторые вещи могут отличаться, но я думаю, что эти фундаментальные концепции совпадают.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...