如何在WPF中单击按钮更新文本框背景色

s

我有两个文本框,其中包含rollnumbername,并且包含在ListBox中。我有一个按钮,每次单击都会在textBoxes中添加数据。

我想要实现的是,当我单击按钮时,它必须将两个文本框的背景色都更改为绿色。(记住每次单击此按钮时,我都有一个新行,它在两个文本框中都添加了一些文本)。

我尝试使用触发器,但还无法实现。代码如下:

 <Window.Resources>
        <Style x:Key="buttonColorChange" TargetType="{x:Type Button}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Click, ElementName=btnClick}" Value="true">
                    <Setter Property="Background" Value="Green"></Setter>
                </DataTrigger>                
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <Grid>

        <ListBox Name="empLB" ItemsSource="{Binding Path=emp}" Height="100" Width="300" VerticalAlignment="Top">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <DockPanel  Width="300" >                        
                        <TextBox  Name="txt2" Text="{Binding Path= RollNo}"></TextBox>
                        <TextBox  Name="txt1" Text="{Binding Path=Name}"></TextBox>
                    </DockPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>            
        </ListBox>
        <Button  Style="{StaticResource buttonColorChange}" Name="btnClick" Height="20" Width="100" Content="click On me" Command="{Binding BtnClick}" ></Button>
    </Grid>

如何将按钮单击时文本框的颜色更改为绿色?

PhysXCoder

像评论者一样,我也将这种逻辑放入ViewModel中。这是一个例子。我正在使用GalaSoft.MvvmLight nuget包。

查看XAML:

<Window.Resources>
    <local:BoolToBrushConverter x:Key="boolToColorConv" />
</Window.Resources>
<Grid>
    <ListBox Name="empLB" ItemsSource="{Binding Path=emp}" Height="100" Width="300" VerticalAlignment="Top">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <DockPanel  Width="300" >
                    <TextBox  Name="txt2" 
                              Text="{Binding Path= RollNo}" 
                              Background="{Binding  Path=DataContext.ContainsItems, 
                                                    Converter={StaticResource boolToColorConv}, 
                                                    RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Grid}} }" />
                    <TextBox  Name="txt1" 
                              Text="{Binding Path=Name}" 
                              Background="{Binding  Path=DataContext.ContainsItems, 
                                                    Converter={StaticResource boolToColorConv}, 
                                                    RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Grid}} }" />
                </DockPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
    <Button Name="btnClick" Height="20" Width="100" Content="click On me" Command="{Binding BtnClick}" />
</Grid>

查看代码:

public partial class RollWindow : Window
{
    public RollWindow()
    {
        InitializeComponent();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        // You might want to replace this with a ViewModel locator
        DataContext = new RollsViewModel();
    }
}

ViewModel:

public class RollsViewModel : ViewModelBase
{
    public ObservableCollection<Item> emp
    {
        get;
        set;
    }

    public bool ContainsItems
    {
        get { return _containsItems; }
        set { _containsItems = value; RaisePropertyChanged(); }
    }
    private bool _containsItems;

    public RollsViewModel()
    {
        emp = new ObservableCollection<Item>();
    }

    public ICommand BtnClick
    {
        get
        {               
            if (_btnClick == null)
            {
                _btnClick = new RelayCommand(() =>
                {
                    // Dummy action, replace with call to model
                    emp.Add(new Item() { Name = "A roll", RollNo = emp.Count });
                    ContainsItems = emp.Count > 0;
                });
            }
            return _btnClick;
        }
    }
    private RelayCommand _btnClick;       
}

public class Item : ViewModelBase
{
    public int RollNo
    {
        get { return _rollNo; }
        set { _rollNo = value; RaisePropertyChanged();  }
    }
    private int _rollNo;

    public string Name
    {
        get { return _name; }
        set { _name = value; RaisePropertyChanged(); }
    }
    private string _name;
}

转换器:

public class BoolToBrushConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var color = (value is bool && (bool)value) ? System.Windows.Media.Colors.Green : System.Windows.SystemColors.ControlColor;
        return new SolidColorBrush(color);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在单击时更改文本框的背景色

来自分类Dev

在WPF中,如何在主窗口中更新文本框?

来自分类Dev

如何在全局C#中为Winform中的所有文本框设置背景色?

来自分类Dev

单击按钮时更新文本框值

来自分类Dev

单击按钮时更新文本框值

来自分类Dev

使用文本框背景色

来自分类Dev

如何在vb.net中找到文本框的只读背景色?

来自分类Dev

单击Angular JS中的按钮添加新文本框

来自分类Dev

如何使用JavaScript更新文本框的背景颜色?

来自分类Dev

如何在WPF文本框中推迟更新

来自分类Dev

在VS2015中使用编码的UI测试来声明WPF文本框的背景色

来自分类Dev

按钮单击wpf时如何验证空文本框?

来自分类Dev

如何在颤动中改变按钮主题的背景色,文本颜色和高度?

来自分类Dev

如何在WPF中设置标签的背景色?

来自分类Dev

如何在WPF中动态绑定背景色?

来自分类Dev

如何在Rich文本框中更改所选文本背景颜色WPF C#

来自分类Dev

如何在div中删除文本的标准背景色

来自分类Dev

当我在文本框中单击时如何在wpf中启用弹出控件?

来自分类Dev

根据文本框值更改文本框背景色

来自分类Dev

单击“编辑”按钮时如何在gridview中获取文本框值?

来自分类Dev

单击按钮时如何在文本框中显示不同的sql数据

来自分类Dev

如何在uwp的其他页面上单击按钮的文本框中设置值?

来自分类Dev

单击相应按钮时如何在文本框中附加特殊符号

来自分类Dev

如何在uwp的其他页面上单击按钮的文本框中设置值?

来自分类Dev

单击kendo按钮时如何在div中添加新的文本框?

来自分类Dev

如何在用户单击按钮后插入新文本之前测试 Tkinter 文本框小部件的当前文本?

来自分类Dev

单击时动态更新文本框

来自分类Dev

如何在服务器中使用C#更新文件的文本框中添加更新行?

来自分类Dev

如何在WPF中向文本框添加“清除”按钮?

Related 相关文章

  1. 1

    如何在单击时更改文本框的背景色

  2. 2

    在WPF中,如何在主窗口中更新文本框?

  3. 3

    如何在全局C#中为Winform中的所有文本框设置背景色?

  4. 4

    单击按钮时更新文本框值

  5. 5

    单击按钮时更新文本框值

  6. 6

    使用文本框背景色

  7. 7

    如何在vb.net中找到文本框的只读背景色?

  8. 8

    单击Angular JS中的按钮添加新文本框

  9. 9

    如何使用JavaScript更新文本框的背景颜色?

  10. 10

    如何在WPF文本框中推迟更新

  11. 11

    在VS2015中使用编码的UI测试来声明WPF文本框的背景色

  12. 12

    按钮单击wpf时如何验证空文本框?

  13. 13

    如何在颤动中改变按钮主题的背景色,文本颜色和高度?

  14. 14

    如何在WPF中设置标签的背景色?

  15. 15

    如何在WPF中动态绑定背景色?

  16. 16

    如何在Rich文本框中更改所选文本背景颜色WPF C#

  17. 17

    如何在div中删除文本的标准背景色

  18. 18

    当我在文本框中单击时如何在wpf中启用弹出控件?

  19. 19

    根据文本框值更改文本框背景色

  20. 20

    单击“编辑”按钮时如何在gridview中获取文本框值?

  21. 21

    单击按钮时如何在文本框中显示不同的sql数据

  22. 22

    如何在uwp的其他页面上单击按钮的文本框中设置值?

  23. 23

    单击相应按钮时如何在文本框中附加特殊符号

  24. 24

    如何在uwp的其他页面上单击按钮的文本框中设置值?

  25. 25

    单击kendo按钮时如何在div中添加新的文本框?

  26. 26

    如何在用户单击按钮后插入新文本之前测试 Tkinter 文本框小部件的当前文本?

  27. 27

    单击时动态更新文本框

  28. 28

    如何在服务器中使用C#更新文件的文本框中添加更新行?

  29. 29

    如何在WPF中向文本框添加“清除”按钮?

热门标签

归档