将按钮的可见性绑定到两个文本框的内容的最简洁方法

2023-12-23

我有一个Button在我的应用程序中,我已将其“功能”绑定到是否TextBox是空的,如下所示:

<Button Content="Go" 
        IsEnabled="{Binding Text, 
                    Converter={StaticResource EnableIfStringNotEmptyDataSource}, 
                    ElementName=MyTextbox}"/>

(实施EnableIfStringNotEmptyDataSource为简洁起见省略)。

这会在以下情况下自动更改状态:TextBox的文字发生变化。

以相同的方式绑定属性的最优雅的方式是什么two文本框是否都是空的?


Edit:对于 silverlight 来说,这可能是最干净的:

<TextBox Text="{Binding TB1Text, Mode=TwoWay}" />
<TextBox Text="{Binding TB2Text, Mode=TwoWay}"/>
<Button Content="Lorem Ipsum" IsEnabled="{Binding ButtonIsEnabled}"/>
private string _TB1Text;
public string TB1Text
{
    get { return _TB1Text; }
    set
    {
        if (_TB1Text != value)
        {
            _TB1Text = value;
            PropertyChanged.Notify(() => this.TB1Text);
            PropertyChanged.Notify(() => this.ButtonIsEnabled);
        }
    }
}

private string _TB2Text;
public string TB2Text
{
    get { return _TB2Text; }
    set
    {
        if (_TB2Text != value)
        {
            _TB2Text = value;
            PropertyChanged.Notify(() => this.TB2Text);
            PropertyChanged.Notify(() => this.ButtonIsEnabled);
        }
    }
}

public bool ButtonIsEnabled
{
    get { return !(String.IsNullOrEmpty(TB1Text) && String.IsNullOrEmpty(TB2Text)); }
}

(PropertyChanged.Notify只是一个扩展方法,无需传递字符串即可引发事件)


不会使用绑定,而是使用MultiDataTrigger:

<TextBox Name="tb1"/>
<TextBox Name="tb2"/>
<Button Content="Lorem Ipsum">
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding Text, ElementName=tb1}" Value="{x:Static sys:String.Empty}"/> 
                        <Condition Binding="{Binding Text, ElementName=tb2}" Value="{x:Static sys:String.Empty}"/> 
                    </MultiDataTrigger.Conditions>
                    <Setter Property="IsEnabled" Value="False"/>
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

顺便说一句,您不需要为您的一个 TextBox 案例使用转换器:

<Button Content="Lorem Ipsum" IsEnabled="{Binding Text.Length,
                                                  ElementName=MyTextBox}"/>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将按钮的可见性绑定到两个文本框的内容的最简洁方法 的相关文章

  • 如何更改 TextBox.Text 而不丢失 WPF 中的绑定?

    在 WPF 应用程序中 我正在创建一个设置窗口来自定义键盘快捷键 在文本框中 我处理 KeyDown 事件并将 Key 事件转换为人类可读的形式 以及我想要获取数据的形式 文本框声明如下
  • 应用程序在尝试绑定隔离存储映像时崩溃

    在我的应用程序中 我使用下面提到的辅助方法将我的独立存储图像绑定到图像控件 我从链接 获得了这个辅助方法将存储在独立存储中的图像绑定到 Windows Phone 中的图像控件 https stackoverflow com questio
  • 当其源是 https uri 时如何使 wpf MediaElement 播放

    在 wpf 独立应用程序 exe 中 我在主窗口中包含了 MediaElement
  • WCF RIA 服务 - 返回两个已定义类的自定义类

    我有一个使用 EF 4 的 Silverlight WCF RIA 服务应用程序 当前 有一个域服务返回两种类型的类 OrderItem 和 Event 我想创建一个包含这两项的类 以便更轻松地在 XAML 级别操作数据 下面是结合了这两个
  • 增加 WPF 弹出动画的持续时间

    我有一个 WPF PopUp 控件 用于显示菜单叠加层 并且使用默认的淡入淡出动画 不过我想让动画需要更长的时间才能完成 我可以在 XAML 中做到这一点吗 你能在这里发布相关的xaml代码吗 否则 您可以查看这些链接以开始使用 xaml
  • 如何将 WPF 窗口置于前面?

    我创建了一个单实例应用程序 并且希望在用户多次启动该应用程序时激活已打开的窗口 这工作正常 但我有一个问题 如果已经打开的窗口超出了另一个应用程序窗口 我必须将其放在前面 我尝试过 window Focus 和 window Show 但它
  • 转到 C# WPF 中的第一页

    我正在 WPF 中使用导航服务 为了导航到页面 我使用 this NavigationService Navigate new MyPage 为了返回我使用 this NavigationService GoBack 但是如何在不使用的情况
  • 以编程方式使用自定义元素创建网格

    我正在尝试以编程方式创建一个网格 并将自定义控件作为子项附加到网格中 作为 2x2 矩阵中的第 0 行第 0 列 为了让事情变得更棘手 我使用了 MVVM 设计模式 下面是一些代码可以帮助大家理解这个想法 应用程序 xaml cs base
  • WPF/数据集:如何通过 XAML 将相关表中的数据绑定到数据网格列中?

    我正在使用 WPF DataSet 连接到 SQL Server Express XAML 和 C Visual Studio 2013 Express 我从名为 BankNoteBook 的现有 SQL Server Express 数据
  • 实体框架 - 绑定 WPF 树视图控件

    在服务类别表中 ParentCategoryId 是 ServiceCategoryId 它是父类别 我的类别可以有第 n 级层次结构 因此我需要使用树视图控件来呈现它 我怎样才能做到这一点 Thanks 你可以使用分层数据模板 http
  • ReactiveUI 和 Caliburn Micro 一起?

    我一直在使用 Caliburn Micro 作为我们的 MVVM 框架对新的 Silverlight 应用程序进行一些原型工作 团队总体上对此感到满意 为了解决对服务的请求限制的一些问题 有人建议我研究 ReactiveUI 的 React
  • 如何在 wpf 应用程序的代码隐藏中创建集合视图源

    我有以下代码 public partial class MainWindow Window public MainWindow InitializeComponent var entities new DemoEntities var de
  • 如何在 Silverlight 3 中将 .NET RIA 服务与 MVVM 结合起来?

    NET RIA 服务被描述为 Silverlight 的 n 层框架 我一直想知道这个框架和模型 视图 视图模型模式之间有什么关系 它们是否存在冲突 或者您能看到协同组合的潜力吗 NET RIA 服务和 MVVM 是协同作用的 并不冲突 例
  • 绑定导致 StackOverflow

    我不确定我在这里做错了什么 可以说 我有两个用户控件BoxAand BoxB 两者都有一个名为的 DependencyPropertyText BoxB 包装了具有常规 TextBox 的 BoxA 绑定应该像这样 BoxB Text Bo
  • Windows Phone 上的列表框样式所选项目

    我想知道如何在选择列表框的项目时添加样式 我有以下列表框
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 如何从WPF中的数据网格中获取单元格的值? [复制]

    这个问题在这里已经有答案了 可能的重复 从 DataGrid 中选择 DataGridCell https stackoverflow com questions 9978119 select datagridcell from datag
  • 如何从 XAML 设置 WPF 用户控件属性?

    我试图从 XAML 设置同一用户控件的多个实例的 fill 属性 以便区分它们 我在控件的 C 代码隐藏中使用依赖属性 并在实例化控件时在 XAML 中引用该属性 这是我尝试过的简化示例 首先是用户控件的 XAML
  • 访问 XAML 中的静态字段

    如何在 xaml 中引用类的静态属性 换句话说 我想做这样的事情 Class BaseThingy public static readonly Style BaseStyle
  • 将事件绑定到 ItemsControl 中的按钮

    我有一个 Windows Phone 7 应用程序 其中包含一些 xaml 如下所示

随机推荐