我在数据库中有一个表,我需要在其中显示所有行的内容(作为 TextBlock),并且在每个 TextBlock 的右侧我需要显示一个 TextBox,以便用户可以为每一行输入一个值(一个数字)和当用户提供的值为负数时,我还需要能够更改任何 TextBox 的颜色。
有人可以给我一个线索吗?
PD:我正在使用带有 Prism 4 和 MVVM 模式以及 VS2010 Ultimate 的 WPF
我在数据库中有一个表,我需要在其中显示所有行的内容(作为 TextBlock),并且在每个 TextBlock 的右侧我需要显示一个 TextBox,以便用户可以为每一行输入一个值(一个数字)和当用户提供的值为负数时,我还需要能够更改任何 TextBox 的颜色。
有人可以给我一个线索吗?
PD:我正在使用带有 Prism 4 和 MVVM 模式以及 VS2010 Ultimate 的 WPF
很高兴知道您尝试了什么,以便我们可以更好地帮助您,但您几乎肯定希望将数据绑定到 aDataGrid
或,如果您绝对需要更大的灵活性(到目前为止,这听起来不像是案例),一个ItemsControl
。你不想只是Grid
动态地创建一个。
您关于 TextBox 以及当值为负数时如何更改其颜色的问题实际上是与如何进行布局不同的问题。我会Validation
为此研究 WPF 的组件。
我不会给你一个完整的解决方案,但我可以为你指出正确的方向。
我首先创建一个数据结构,其中包含 和 的属性,Name
并为属性更改通知Value
实现INotifyPropertyChanged。
接下来ViewModel
(或可能Model
),我将创建一个ObservableCollection<MyDataObject>
,并用数据库中的数据填充它。
在 XAML 中,我将使用绑定到集合的ItemsControlItemTemplate
,并覆盖将每个项目呈现为 HorizontalStackPanel
或 a Grid
,其中包含Label
andTextBox
对于该TextBox.Foreground
属性,我会将其绑定到绑定的相同值TextBox.Text
,但我还会在绑定中使用IValueConverter来检查该值是高于还是低于 0,并返回正确的颜色。由于它是一个绑定,它会在值更改时自动更新。
<TextBox Text="{Binding Value}"
Foreground="{Binding Value, Converter={StaticResource MyCustomConverter}}" />