美文网首页js css html
WPF 数据绑定-绑定数据组集合

WPF 数据绑定-绑定数据组集合

作者: Ritchie_Li | 来源:发表于2022-06-17 22:12 被阅读0次

UI设计:

列表绑定数据集合

<ListBox Name="lstProducts" Margin="5" DisplayMemberPath="ModelName" SelectionChanged="lstProducts_SelectionChanged">

后台代码:

private ICollection<Product> products;

products = App.StoreDb.GetProducts();

lstProducts.ItemsSource = products;

UI设计中Grid绑定列表控件:

<Grid Name="gridProductDetails" DataContext="{Binding ElementName=lstProducts, Path=SelectedItem}" TextBox.LostFocus="txt_LostFocus">

有效性检查:

<Grid.BindingGroup>

    <BindingGroup x:Name="productBindingGroup">

          <BindingGroup.ValidationRules>

                    <local:NoBlankProductRule></local:NoBlankProductRule>

            </BindingGroup.ValidationRules>

      </BindingGroup>

</Grid.BindingGroup>

元素绑定属性,并设置

<TextBox Margin="5" Grid.Row="2" Grid.Column="1">

    <TextBox.Text>

        <Binding Path="UnitCost" NotifyOnValidationError="true" StringFormat="{}{0:C}">

              <Binding.ValidationRules>

                    <local:PositivePriceRule Max="999.99"></local:PositivePriceRule>

              </Binding.ValidationRules>

          </Binding>

    </TextBox.Text>

</TextBox>

添加检查类:

using System.Globalization;

using System.Windows.Data;

using StoreDatabase;

namespace WpfApp

{

    internal class NoBlankProductRule : ValidationRule

    {

        public override ValidationResult Validate(object value, CultureInfo cultureInfo)

        {

            BindingGroup bindingGroup = (BindingGroup)value;

            // This product has the original values.

            Product product = (Product)bindingGroup.Items[0];

            // Check the new values.

            string newModelName = (string)bindingGroup.GetValue(product, "ModelName");

            string newModelNumber = (string)bindingGroup.GetValue(product, "ModelNumber");

            if ((newModelName == "") && (newModelNumber == ""))

            {

                return new ValidationResult(false,

                    "A product requires a ModelName or ModelNumber.");

            }

            else

            {

                return new ValidationResult(true, null);

            }

        }

    }

}

文本框修改后属性值随失去焦点时生效

private void txt_LostFocus(object sender, RoutedEventArgs e)

 {

            productBindingGroup.CommitEdit();

  }

列表选择变化时

private void cmdUpdateProduct_Click(object sender, RoutedEventArgs e)

 {

            // Make sure update has taken place.

            FocusManager.SetFocusedElement(this, (Button)sender);

   }

相关文章

  • WPF 数据绑定-绑定数据组集合

    UI设计: 列表绑定数据集合 后台代码: private ICollection products; produ...

  • WPF数据绑定

    元素绑定 数据绑定最简单的形式是,源对象是WPF元素而且源属性是依赖属性。依赖项属性具有内置的更改通知支持,当在源...

  • 第十三章 数据绑定

    数据绑定介绍 Spring MVC是怎样完成的数据绑定 在数据绑定过程中,Spring MVC框架会通过数据绑定组...

  • WPF 数据绑定Binding

    自定义Binding 当为Binding设置了继承System.ComponentModel.INotifyPro...

  • WPF 数据绑定(一)

    最基本的绑定 将Text 的文本绑定到Window的Background属性,设置双向绑定,修改文本的值,改变Gr...

  • WPF 数据绑定(二)

    本例演示如何将数据模型的实例绑定到界面控件。 XAML代码如下:

    WPF 数据绑定(三)

    实现绑定一个对象的集合。在界面添加ListBox控件,指定显示对象的属性值。 在后台代码,获取数据集合源,绑定到L...

  • WPF 数据绑定(四)

    实现绑定到DataSet对象。 界面设计: 同样创建Grid的绑定,指定到列表元素,选择的Item

  • WPF 数据绑定(四)

    筛选的数据源的绑定,使用Linq Filter Data Collection。从数据集合中筛选符合设定条件的数据...

  • Asp.Net(c#)数据绑定(入门学习笔记3)

    数据绑定 将数据源(变量、属性、集合、数据字典)绑定到页面的特定位置。以及将页面的数据跟新到数据源中。 简单的属性...

网友评论

    本文标题:WPF 数据绑定-绑定数据组集合

    本文链接:https://www.haomeiwen.com/subject/kswhvrtx.html