- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个我打败了;
我有一个 WPF 窗口,其中包含两个(对于这种情况很重要)控件,它们都来自 CodePlex 提供的 WPF 工具包;一个 DatePicker 和一个 DataGrid。
此窗口的 DataContext 设置为一个 CLR 对象,该对象具有所需的所有信息。这个 CLR 对象有一个大的数据列表,以及一个名为 GetDataForDate( DateTime date ) 的方法,它决定我们将看到哪个日期的数据。
如何创建数据网格可以绑定(bind)到的 ObjectDataProvider(我认为这将是正确的解决方案),它提供对使用 DatePicker 的选定日期作为参数调用的 GetDataForDate() 返回的数据的访问?
换句话说,我希望用户使用日期选择器来选择日期,并且每当日期更改以反射(reflect)正确的数据时,网格应自动更新。
我必须做什么样的黑魔法才能实现这样的事情 - 我猜这应该是一个相对常见的数据绑定(bind)场景?
提前致谢!
最佳答案
这是我的完整代码。我希望这会有所帮助。
xaml 代码:
<Window x:Class="DataGridSort.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dg="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"
xmlns:System="clr-namespace:System;assembly=mscorlib"
Title="Window1" Height="413" Width="727"
x:Name="_this">
<Window.Resources>
<ObjectDataProvider ObjectInstance="_this.DataContext"
MethodName="GetFromDate"
x:Key="odp">
<ObjectDataProvider.MethodParameters>
<System:DateTime>2008-01-01</System:DateTime>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<dg:DatePicker Grid.Row="0" x:Name="dtpSource" >
<dg:DatePicker.SelectedDate>
<Binding Source="{StaticResource odp}"
Path="MethodParameters[0]"
BindsDirectlyToSource="True"
Mode="OneWayToSource"/>
</dg:DatePicker.SelectedDate>
</dg:DatePicker>
<dg:DataGrid x:Name="dtgGrid"
ItemsSource="{Binding Source={StaticResource odp}}"
AutoGenerateColumns="True"
Grid.Row="1"/>
</Grid>
</Window>
背后的代码:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
LoadData();
}
protected void LoadData()
{
DataContext = new Data();
ObjectDataProvider odp = this.Resources["odp"] as ObjectDataProvider;
odp.ObjectInstance = DataContext;
}
}
和业务对象:
public class DataItem
{
public string Name { get; set; }
public int BirthYear { get; set; }
}
public class Data
{
private readonly List<DataItem> data;
public Data()
{
data = new List<DataItem>();
data.Add(new DataItem { Name = "John", BirthYear = 2007 });
data.Add(new DataItem { Name = "Mike", BirthYear = 2007 });
data.Add(new DataItem { Name = "Aaron", BirthYear = 2006 });
data.Add(new DataItem { Name = "Bill", BirthYear = 2006 });
data.Add(new DataItem { Name = "Steven", BirthYear = 2005 });
data.Add(new DataItem { Name = "George", BirthYear = 2004 });
data.Add(new DataItem { Name = "Britany", BirthYear = 2004 });
}
public List<DataItem> GetFromDate(DateTime dt)
{
return this.data.Where(d => d.BirthYear == dt.Year).ToList();
}
}
关于wpf - 使用 WPF 工具包 DatePicker 作为 ObjectDataProvider 的参数,用作 itemssource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/297064/
我目前正在尝试使用对象数据提供程序来返回我想用作每个列表框项的背景的颜色,颜色取决于该列表框项索引。 基本上传递给对象的参数是原始颜色和 listboxitem 索引,它会根据它的索引返回更浅的颜色.
我不敢相信没有人能解决这个问题,或者我只是错过了一些东西。 我有一个自定义的 DataSourceController 来处理检索数据并将其提供给其余的应用程序控件。自然,它使用我也初始化的 sql
假设我有一个特定控件的基本 View 模型,该控件实现了一些基本属性,例如 public abstract class ControlVmBase{ public abstract int I
我正在尝试在我的 ObjectDataSource 中使用嵌套类型 this文章。它似乎对我不起作用。 最佳答案 这是 VS 2008 及更高版本中的已知问题。 Microsoft's offici
我写了这段代码: public class CustomData { public int F1 { get; set; } public int F2 { get; set; }
我创建了一个简单的 MVVM,只有三个类 CashFlowView、CashFlowViewModel、CashFlowModel。 我使用基础架构的 9.1 XamDataPresenter(或 x
我有一个绑定(bind)到 ComboBox 的枚举在我看来。 public enum MyItems { [Browsable(false)] Item1, [Browsab
我将其中一个 VM 的实例放入资源字典中,例如: 我将某些用户控件的 DataContext 绑定(bind)到此: 它在运行时运行良好,因为所有连接和服务器都可用,并且许多逻辑对象都已正确初始化
我正在尝试在我的主应用程序和用户控件之间共享一个 ObjectDataProvider 资源。我在应用程序和用户控件中包含的单独资源字典文件中定义 odp。 然后我尝试在主应用程序中访问它,如下所
我看过了,但我找不到这个错误的答案(我明白了!)。 我正在阅读本文 CodeProject Datagrid practical example并尝试在 WPF 中修改我的简单 CRUD 屏幕的代码,
问题很简单: 有一个命名空间 xmlns:local= "clr-namespace:Notify" . 有一个“通知”类。该类位于解决方案中 有一个 XAML 代码: 在这种形式下,一
假设您有以下类(class): class ProcessController { public List Active { get { ... } } ... public
我想在我的 C# 代码后面而不是我的 XAML 中创建我的 ObjectDataProvider。 我想知道如何将此 XAML 更改为等效的 C#。 XAML 由 Microsoft Expressi
我在 DataGrid 中有两个 DataGridComboBoxColumns(技术上是 DataGridTemplateColumns)。我正在使用 MVVM。 第一列的 ItemsSource
在我的 WPF 应用程序中,我有一个保存按钮,当集合计数大于 0 时需要启用该按钮。 我正在尝试使用将使用 Convert.ToBoolean(int value) 的 ObjectDataProvi
我不太清楚问题出在哪里,因为我几乎可以肯定我做了其他帖子告诉我要做的事情。我之前已经将一个可观察的字符串集合绑定(bind)到一个组合框,所以它应该可以工作。 数据类: namespace UIBlo
我们以前在我以前的工作中这样做过,它在那里工作得很好,但由于某种原因,我现在无法让它工作。 我只想使用 ObjectDataProvider 在 XAML 中创建 ViewModel 类的实例,以便我
我将一个 ListView 绑定(bind)到 ObjectDataProvider。我从用户那里获取了一些值并在运行时更改了我的 ObjectDataProvider,但是当我的 ObjectDat
我想在后面的代码中用键/值数据填充组合框,我有这个: XAML: 代码隐藏: using System.Windows;
我正在尝试将 Enum 绑定(bind)到 ComboBox。我见过很多人使用 ObjectDataProvider 但我似乎无法访问它。我还注意到有些人在 Window.Resources 中使用它
我是一名优秀的程序员,十分优秀!