如何在运行时编辑WPF按钮
所以我用Expression Blend来设计我的按钮。我创建了一个新按钮,通过删除其中的所有内容来编辑按钮的模板。然后我在其中添加了一个网格,并将其命名为“网格”。在网格内部,我添加了一个textblock,并称之为“textblock”。然后我将模板保存在应用程序下 这是app.xaml文件中的内容。如何在运行时编辑WPF按钮,wpf,templates,expression-blend,Wpf,Templates,Expression Blend,所以我用Expression Blend来设计我的按钮。我创建了一个新按钮,通过删除其中的所有内容来编辑按钮的模板。然后我在其中添加了一个网格,并将其命名为“网格”。在网格内部,我添加了一个textblock,并称之为“textblock”。然后我将模板保存在应用程序下 这是app.xaml文件中的内容。 请告知,谢谢 创建一个按钮模板,就像您拥有的那样,并为每个项目添加控件: <ControlTemplate TargetType="{x:Type Button}">
请告知,谢谢 创建一个按钮模板,就像您拥有的那样,并为每个项目添加控件:
<ControlTemplate TargetType="{x:Type Button}">
<StackPanel>
<Label Content="{Binding CompanyName}" />
<Image Source="{Binding Image}" />
<Label Content="{Binding StockChange}" />
</StackPanel>
</ControlTemplate>
在code behind或viewmodel中创建一个ObservableCollection
,以保存从API数据创建的CompanyInfo
对象:
public ObservableCollection<CompanyInfo> CompanyInfoList = new ObservableCollection<CompanyInfo>();
还有你叔叔。我建议研究其中的一些东西,以便更好地了解它的工作原理。创建一个按钮模板,就像您拥有的那样,并为每个项目添加控件:
<ControlTemplate TargetType="{x:Type Button}">
<StackPanel>
<Label Content="{Binding CompanyName}" />
<Image Source="{Binding Image}" />
<Label Content="{Binding StockChange}" />
</StackPanel>
</ControlTemplate>
在code behind或viewmodel中创建一个ObservableCollection
,以保存从API数据创建的CompanyInfo
对象:
public ObservableCollection<CompanyInfo> CompanyInfoList = new ObservableCollection<CompanyInfo>();
还有你叔叔。我建议研究其中一些东西,以便更好地了解它是如何工作的
我想创建一个按钮来表示公司股票信息,如 公司名称、形象和股价上涨百分比合一 单按钮。因此,在运行时,我将从 外部API,并在运行时创建10个按钮,其中包含信息和 将其添加到我的主窗口中的stackpanel 对于这种情况,您需要使用ListBox和ItemTempate。 请尝试下面的代码
<ListBox x:Name="lstBox">
<ListBox.ItemTemplate>
<DataTemplate>
<Button>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding CompanyName}" Margin="0,0,10,0"/>
<TextBlock Text="{Binding Percent}" />
</StackPanel>
</Button>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
ObservableCollection<CompanyModel> companies = new ObservableCollection<CompanyModel>();
for (int i = 0; i < 10; i++)
{
CompanyModel companyModel = new CompanyModel()
{
Percent = i,
CompanyName = "Name" + i
};
companies.Add(companyModel);
}
lstBox.ItemsSource = companies;
}
}
class CompanyModel
{
public int Percent { get; set; }
public string CompanyName { get; set; }
}
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
ObservableCollection Companys=新的ObservableCollection();
对于(int i=0;i<10;i++)
{
CompanyModel CompanyModel=新CompanyModel()
{
百分比=i,
CompanyName=“Name”+i
};
companys.Add(companyModel);
}
lstBox.ItemsSource=公司;
}
}
类公司模型
{
公共整数百分比{get;set;}
公共字符串CompanyName{get;set;}
}
我想创建一个按钮来表示公司股票信息,如 公司名称、形象和股价上涨百分比合一 单按钮。因此,在运行时,我将从 外部API,并在运行时创建10个按钮,其中包含信息和 将其添加到我的主窗口中的stackpanel 对于这种情况,您需要使用ListBox和ItemTempate。 请尝试下面的代码
<ListBox x:Name="lstBox">
<ListBox.ItemTemplate>
<DataTemplate>
<Button>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding CompanyName}" Margin="0,0,10,0"/>
<TextBlock Text="{Binding Percent}" />
</StackPanel>
</Button>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
ObservableCollection<CompanyModel> companies = new ObservableCollection<CompanyModel>();
for (int i = 0; i < 10; i++)
{
CompanyModel companyModel = new CompanyModel()
{
Percent = i,
CompanyName = "Name" + i
};
companies.Add(companyModel);
}
lstBox.ItemsSource = companies;
}
}
class CompanyModel
{
public int Percent { get; set; }
public string CompanyName { get; set; }
}
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
ObservableCollection Companys=新的ObservableCollection();
对于(int i=0;i<10;i++)
{
CompanyModel CompanyModel=新CompanyModel()
{
百分比=i,
CompanyName=“Name”+i
};
companys.Add(companyModel);
}
lstBox.ItemsSource=公司;
}
}
类公司模型
{
公共整数百分比{get;set;}
公共字符串CompanyName{get;set;}
}
如果用户必须将模板分解为简单的文本更改,则该模板不是非常有用。默认按钮模板使用ContentPresenter
显示任意内容(这不是必需的文本!!)。如果您希望在运行时动态地更改文本框的内容,请考虑将<代码>文本<代码>字段绑定到属性,然后修改代码中的属性。我想创建一个按钮来表示公司的股票信息,如公司名称、图像和股票价格的增加,都在一个按钮中。因此,在运行时,我将从外部API中获取前10个股票,并在运行时使用这些信息创建10个按钮,然后将其添加到主窗口中的stackpanel中。你可以给我建议或给我一个简单的示例谢谢你可以创建一个custombutton,它有三个公司名称、图像和百分比的依赖属性,并用于不同的公司介意给我一个示例@Ayyappansubramanian如果用户必须将其分解为简单的更改文本,它不是非常有用的模板。默认按钮模板使用ContentPresenter
显示任意内容(这不是必需的文本!!)。如果您希望在运行时动态地更改文本框的内容,请考虑将<代码>文本<代码>字段绑定到属性,然后修改代码中的属性。我想创建一个按钮来表示公司的股票信息,如公司名称、图像和股票价格的增加,都在一个按钮中。因此,在运行时,我将从外部API中获取前10个股票,并在运行时使用这些信息创建10个按钮,然后将其添加到主窗口中的stackpanel中。您可以给我建议或给我一个简单的示例谢谢您可以创建一个custombutton,它具有公司名称、图像和百分比的三个依赖属性,并用于不同的公司介意给我一个示例@AyyappanSubramanian吗
<ItemsControl ItemsSource="{Binding Path=CompanyInfoList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
//Button with Bindings Goes Here
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<ListBox x:Name="lstBox">
<ListBox.ItemTemplate>
<DataTemplate>
<Button>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding CompanyName}" Margin="0,0,10,0"/>
<TextBlock Text="{Binding Percent}" />
</StackPanel>
</Button>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
ObservableCollection<CompanyModel> companies = new ObservableCollection<CompanyModel>();
for (int i = 0; i < 10; i++)
{
CompanyModel companyModel = new CompanyModel()
{
Percent = i,
CompanyName = "Name" + i
};
companies.Add(companyModel);
}
lstBox.ItemsSource = companies;
}
}
class CompanyModel
{
public int Percent { get; set; }
public string CompanyName { get; set; }
}