在列表框中选中复选框时更改文本框的颜色 c# wpf

Posted

技术标签:

【中文标题】在列表框中选中复选框时更改文本框的颜色 c# wpf【英文标题】:In a Listbox change the color of textbox when checking a checkbox c# wpf 【发布时间】:2021-05-24 17:49:59 【问题描述】:

我有一个包含 3 个按钮、2 个文本框和每个元素中的复选框的列表框。

当我选中复选框时,我希望按钮和 txtboxes 更改属性(颜色/或其他)。

希望有人可以帮助我:)

谢谢你的回答...

        <!-- LISTBOX -->
        <ListBox Name="lstBoxInfoWindow" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Foreground="Black" ScrollViewer.VerticalScrollBarVisibility="Visible" Margin="5,1.2,4.6,-0.4" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2">
            <ListBox.ItemContainerStyle>
                <Style TargetType="ListBoxItem">
                    <Style.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter Property="FontWeight" Value="Bold"/>
                            <Setter Property="Background" Value="Transparent"/>
                            <Setter Property="Foreground" Value="Black"/>
                        </Trigger>
                        <Trigger Property=""
                    </Style.Triggers>
                </Style>
            </ListBox.ItemContainerStyle>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
                        <Button Name="btnPackageVersion" Content ="Package version" Click="btnPackageVersion_Click" HorizontalAlignment="Right" Margin="10,0,10,0">

                        </Button>
                        <Button Name="btnFilterPath" Content ="Filter path" Click="btnFilterpath_Click" HorizontalAlignment="Right"/>
                        <TextBlock Name="txtBlkPath" Text="Binding path, Mode=TwoWay" FontSize="10" Width="500" Height="20" Margin="10,0,10,0"/>

                        <Button Name="btnFilterfile" Content="Filter file" Click="btnFilterfile_Click" HorizontalAlignment="Right"/>
                        <TextBlock Name="txtBlkFile" Text="Binding file, Mode=TwoWay" FontSize="10" Width="150" Height="20" Margin="10,0,10,0"/>

                        <CheckBox Name="chkBxKill" Content="Kill" VerticalAlignment="Center" HorizontalAlignment="Right" IsChecked="Binding keepKill.kill, Mode=TwoWay" Margin="5,0,5,0" Checked="chkBxKill_Checked"/>
                    </StackPanel>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ListBox>

    </Grid>
</Window>

【问题讨论】:

【参考方案1】:

使用DataTemplate 中定义的DataTrigger

以下示例在选中CheckBox 时将按钮的Backgound 设置为红色:

<DataTemplate>
  <StackPanel Orientation="Horizontal"
              HorizontalAlignment="Right">
    ...

    <Button Name="btnFilterfile" />    
    <CheckBox Name="chkBxKill" />
  </StackPanel>

  <DataTemplate.Triggers>
    <DataTrigger Binding="Binding ElementName=chkBxKill, Path=IsChecked" Value="True">
      <Setter TargetName="btnFilterfile" Property="Background" Value="Red" />
    </DataTrigger>
  </DataTemplate.Triggers>
</DataTemplate>

【讨论】:

TY 为您解答。首先我需要说,我是一个完全的新手,所以我可能会说一些愚蠢的话!。我已经实现了您的建议,并且按钮上似乎没有“背景”属性。有一个叫做 TextElement.FontWeight 的东西,我给它的值是 Extralight。但它没有显示在列表框中。 &lt;DataTemplate.Triggers&gt; &lt;DataTrigger Binding="Binding ElementName=chkBxKill, Path=IsChecked"&gt; &lt;Setter TargetName="btnFilterfile" Property="TextElement.FontWeight" Value="ExtraLight"/&gt; 确保您使用来自正确命名空间的正确按钮。它必须是System.Windows.Controls.Button,然后您将获得 Background 属性。 TextElement.FontWeight 不适用于 Button。不确定您使用的是什么命名空间(Windows.UI.XAML - UWP?) 查看代码后,我发现DataTrigger 上缺少Value="True" 属性。我已经添加了它。现在它应该工作了。我在编辑框中写了这段代码(没有编译器支持),很抱歉。 哦,我不只是高兴得到帮助 :) TY 成功了 :) 好人。

以上是关于在列表框中选中复选框时更改文本框的颜色 c# wpf的主要内容,如果未能解决你的问题,请参考以下文章

如何在自定义 Sub 中获取 VBA Access 中文本框的更新值?

VB。如何把 TEXT 文本框中选中的字体 变成想要的颜色

WinUI 3.0 桌面:文本框的背景颜色在鼠标悬停时更改

如何在.net中更改平面列表框的黑色边框颜色? [复制]

通过列表框项目选择c#更改复选框的状态

如何更改 WPF 文本框的突出显示文本颜色?