gpt4 book ai didi

c# - (WPF) 如何使用每行中的按钮更改 listBox 中的按钮图像背景?

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:30 25 4
gpt4 key购买 nike

我有列表框,数据模板是按钮:

 <ListBox  x:Name="lbname" ItemsSource="{Binding myCollection}">        
<ListBox.ItemTemplate>
<DataTemplate>
<Button x:Name="btnname" Content="{Binding name}" Click="btnname_Click">
<Button.Background>
<ImageBrush ImageSource="/myApplication;component/images/buttons/normal.png"/>
</Button.Background>
</Button>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

我有两个用于此列表框图像的图像背景(normal.png 用于正常模式,click.png 用于列表框中的选定项目)

按钮列表中的listBox View 项,按钮图片背景一般为normal.png

我的问题是如何将所选按钮的按钮图像背景更改为 click.png,并将旧的所选按钮检索为 normal.png

如何使用每行中的按钮更改列表框中所选项目的图像背景?

希望这很清楚,请我花一天时间解决这个问题谁能帮忙

谢谢

最佳答案

我还没有测试过,但是你需要一些看起来像这样的代码:

<ListBox x:Name="lbname" ItemsSource="{Binding myCollection}">
<ListBox.ItemTemplate>
<DataTemplate>
<Button x:Name="btnname" Click="btnname_Click">
<Grid>
<Image>
<Image.Style>
<Style>
<Setter Property="Image.Source"
Value="/myApplication;component/images/buttons/normal.png" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected,
RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}"
Value="True">
<Setter Property="Image.Source"
Value="/myApplication;component/images/buttons/click.png" />
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
<TextBlock Text="{Binding name}" HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Grid>
</Button>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

想法是直接绑定(bind)到 ListBoxItem 对象的 IsSelected 属性。这是使用 RelativeSource 绑定(bind)完成的。但是,我猜这段代码不会做你想要的......我建议你可能想使用 ToggleButton 而不是......像这样:

<ListBox x:Name="lbname" ItemsSource="{Binding myCollection}">
<ListBox.ItemTemplate>
<DataTemplate>
<ToggleButton x:Name="btnname" Click="btnname_Click" IsChecked="{Binding
IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type
ListBoxItem}}}">
<Grid>
<Image>
<Image.Style>
<Style>
<Setter Property="Image.Source"
Value="/myApplication;component/images/buttons/normal.png" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected,
RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}"
Value="True">
<Setter Property="Image.Source"
Value="/myApplication;component/images/buttons/click.png" />
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
<TextBlock Text="{Binding name}" HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Grid>
</ToggleButton>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>

关于c# - (WPF) 如何使用每行中的按钮更改 listBox 中的按钮图像背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18228428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com