C# 将模板应用于按钮单击事件上的列表框
我想在点击“btnDetails”按钮后将“detail”模板应用到列表框中C# 将模板应用于按钮单击事件上的列表框,c#,wpf,listbox,datatemplate,C#,Wpf,Listbox,Datatemplate,我想在点击“btnDetails”按钮后将“detail”模板应用到列表框中 <Window> <Window.Resources> <DataTemplate x:Key="detail"> <TextBlock Text="ABC" Background="Yellow"/> </DataTemplate> <Style
<Window>
<Window.Resources>
<DataTemplate x:Key="detail">
<TextBlock Text="ABC" Background="Yellow"/>
</DataTemplate>
<Style x:Key="MyItemStyle" TargetType="{x:Type ListBoxItem}">
<Style.Triggers>
<Trigger Property="Button.IsPressed" Value="True">
<Setter Property="Template" Value="{DynamicResource detail}"/>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<StackPanel>
<ListBox Name="lbDetails" ItemContainerStyle="{Binding MyItemStyle}"></ListBox>
<Button Name="btnDetails">Details</Button>
</StackPanel>
</Window>
细节
我尝试过上面的代码,但它不起作用。Xaml
<Window.Resources>
<DataTemplate x:Key="detail">
<TextBlock Text="{Binding text}" Background="{Binding bg}"/>
</DataTemplate>
</Window.Resources>
<StackPanel>
<ListBox Name="lbDetails" ItemTemplate="{StaticResource detail}"/>
<Button Name="btnDetails" Height="35" Content="Add" Click="btnDetails_Click_1"/>
</StackPanel>
c#
公共部分类主窗口:窗口
{
ObservableCollection lst=新的ObservableCollection();
公共主窗口()
{
初始化组件();
lbDetails.ItemsSource=lst;
}
私有void btnDetails\u Click\u 1(对象发送方,路由目标)
{
添加(新的listboxData(“Textblock”+lst.Count,新的SolidColorBrush(Colors.YellowGreen));
}
}
公共类listboxData
{
公共字符串文本{get;set;}
公共SolidColorBrush bg{get;set;}
公共listboxData(字符串文本,SolidColorBrush bg)
{
this.text=文本;
this.bg=bg;
}
}
Xaml
<Window.Resources>
<DataTemplate x:Key="detail">
<TextBlock Text="{Binding text}" Background="{Binding bg}"/>
</DataTemplate>
</Window.Resources>
<StackPanel>
<ListBox Name="lbDetails" ItemTemplate="{StaticResource detail}"/>
<Button Name="btnDetails" Height="35" Content="Add" Click="btnDetails_Click_1"/>
</StackPanel>
c#
公共部分类主窗口:窗口
{
ObservableCollection lst=新的ObservableCollection();
公共主窗口()
{
初始化组件();
lbDetails.ItemsSource=lst;
}
私有void btnDetails\u Click\u 1(对象发送方,路由目标)
{
添加(新的listboxData(“Textblock”+lst.Count,新的SolidColorBrush(Colors.YellowGreen));
}
}
公共类listboxData
{
公共字符串文本{get;set;}
公共SolidColorBrush bg{get;set;}
公共listboxData(字符串文本,SolidColorBrush bg)
{
this.text=文本;
this.bg=bg;
}
}
Xaml
<Window.Resources>
<DataTemplate x:Key="detail">
<TextBlock Text="{Binding text}" Background="{Binding bg}"/>
</DataTemplate>
</Window.Resources>
<StackPanel>
<ListBox Name="lbDetails" ItemTemplate="{StaticResource detail}"/>
<Button Name="btnDetails" Height="35" Content="Add" Click="btnDetails_Click_1"/>
</StackPanel>
c#
公共部分类主窗口:窗口
{
ObservableCollection lst=新的ObservableCollection();
公共主窗口()
{
初始化组件();
lbDetails.ItemsSource=lst;
}
私有void btnDetails\u Click\u 1(对象发送方,路由目标)
{
添加(新的listboxData(“Textblock”+lst.Count,新的SolidColorBrush(Colors.YellowGreen));
}
}
公共类listboxData
{
公共字符串文本{get;set;}
公共SolidColorBrush bg{get;set;}
公共listboxData(字符串文本,SolidColorBrush bg)
{
this.text=文本;
this.bg=bg;
}
}
Xaml
<Window.Resources>
<DataTemplate x:Key="detail">
<TextBlock Text="{Binding text}" Background="{Binding bg}"/>
</DataTemplate>
</Window.Resources>
<StackPanel>
<ListBox Name="lbDetails" ItemTemplate="{StaticResource detail}"/>
<Button Name="btnDetails" Height="35" Content="Add" Click="btnDetails_Click_1"/>
</StackPanel>
c#
公共部分类主窗口:窗口
{
ObservableCollection lst=新的ObservableCollection();
公共主窗口()
{
初始化组件();
lbDetails.ItemsSource=lst;
}
私有void btnDetails\u Click\u 1(对象发送方,路由目标)
{
添加(新的listboxData(“Textblock”+lst.Count,新的SolidColorBrush(Colors.YellowGreen));
}
}
公共类listboxData
{
公共字符串文本{get;set;}
公共SolidColorBrush bg{get;set;}
公共listboxData(字符串文本,SolidColorBrush bg)
{
this.text=文本;
this.bg=bg;
}
}
以下是一个示例,当您按下按钮时,该示例将修改项目模板
使用按钮(按下开关)
虚拟项
细节
我确实将原始控件包装在内容控件的控件模板中,以实现对iPressed属性的控制
如果您想要一种切换按钮,那么下面是xaml
使用切换开关(开关)
虚拟项
细节
在上面的xaml中,我使用了切换按钮来代替常规按钮,以保留有关的详细信息。下面是一个示例,当您按下按钮时,它将修改项目模板 使用按钮(按下开关)
虚拟项
细节
我确实将原始控件包装在内容控件的控件模板中,以实现对iPressed属性的控制
如果您想要一种切换按钮,那么下面是xaml
使用切换开关(开关)
虚拟项
细节
在上面的xaml中,我使用了切换按钮来代替常规按钮,以保留有关的详细信息。下面是一个示例,当您按下按钮时,它将修改项目模板 使用按钮(按下开关)
虚拟项
细节
我确实在内容控件的c中包装了您的原始控件