@kirya_md

Как подключить Template к new Button()?

Все кнопки должны быть как первая. Тут расписан Template (Можете не разбираться что в нем написано, суть все равно не в этом) и все настройки которые должны быть у кнопки ( Для примера одну кнопку ввел вручную, но с остальными так, увы, нельзя), а ниже XML и C#
XML
<Window x:Class="WpfProgress.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfProgress"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <ControlTemplate x:Key="city" TargetType="Button">
            <Grid Name ="Btn" Height="45">
                <Border>
                    <StackPanel Orientation="Horizontal">
                        <Label Content="{TemplateBinding Content}"
                               Background="Transparent" FontSize="18" Margin="10,0,0,0"
                               VerticalAlignment="Center">
                            <Label.Style>
                                <Style TargetType="Label">
                                    <Setter Property="Foreground" Value="Black"/>
                                    <Style.Triggers>
                                        <DataTrigger Binding="{Binding Path= IsMouseOver, ElementName=Btn}"
                                                     Value="true">
                                            <Setter Property="Foreground" Value="White"/>
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </Label.Style>
                        </Label>
                    </StackPanel>
                </Border>
                <Border Name="MouseOverBorderCityMenu" Background="White">
                    <Border.Style>
                        <Style TargetType="Border">
                            <Setter Property="Opacity" Value="0"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding Path= IsMouseOver, ElementName=Btn}"
                                             Value="true">
                                    <Setter Property="Opacity" Value="0.1"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Border.Style>
                </Border>
            </Grid>
        </ControlTemplate>
    </Window.Resources>
    <Grid>
        <Button Name="ButtonOpen" Width="60" Height="20" 
                HorizontalAlignment="Center"
                Click="OnCityClick">
            <Button.Content>OPEN</Button.Content>
        </Button>
        <Grid Name="cityMenu" HorizontalAlignment="Left" Width ="225" Visibility="Visible">
            <Border BorderThickness="0" Background="Black" Opacity="0.6"/>
            <StackPanel x:Name="stCityMenu" Orientation="Vertical">
                <Button Template="{StaticResource ResourceKey=city}">
                    <Button.Content>Лондон</Button.Content>
                </Button>
            </StackPanel>
        </Grid>
    </Grid>
    
</Window>


ТУТ C#
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data.OleDb;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfProgress
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            
        }

        private void OnCityClick(object sender, RoutedEventArgs e)

        {
            for (int i = 0; i < 6; i++)
            {
                //Мне кажется, что где-то в цикле нужно его добавлять
                Button button1 = new Button();
                button1.Content = "text";
                stCityMenu.Children.Add(button1);
            }
        }
    }

}
  • Вопрос задан
  • 50 просмотров
Решения вопроса 1
yarosroman
@yarosroman Куратор тега C#
C# the best
button1.SetResourceReference(Button.TemplateProperty, "city");
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы