- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
标题或多或少总结了它。如果我们有一个完全干净的 WPF 应用程序,并添加以下 ViewModel:
using System.Collections.ObjectModel;
using System.ComponentModel;
namespace WpfApplication10
{
public sealed class ViewModel
{
private readonly ObservableCollection<MyObject> _myObjects = new ObservableCollection<MyObject>();
public ViewModel()
{
for (var i = 0; i < 5; i++)
{
_myObjects.Add(new MyObject(i, i));
}
}
public ObservableCollection<MyObject> MyObjects
{
get { return _myObjects; }
}
}
public sealed class MyObject : INotifyPropertyChanged
{
private double _unitStake;
private decimal _unitStakeDecimal;
public decimal UnitStakeDecimal
{
get { return _unitStakeDecimal; }
set
{
if (value == _unitStakeDecimal) return;
_unitStakeDecimal = value;
OnPropertyChanged("UnitStakeDecimal");
}
}
public MyObject(double unitStake, decimal unitStakeDecimal)
{
UnitStake = unitStake;
UnitStakeDecimal = unitStakeDecimal;
}
public double UnitStake
{
get { return _unitStake; }
set
{
if (value.Equals(_unitStake)) return;
_unitStake = value;
OnPropertyChanged("UnitStake");
}
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
然后将以下 XAML 添加到 MainWindow:
<Window x:Class="WpfApplication10.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" DataContext="{StaticResource ViewModel}">
<Grid>
<DataGrid CanUserAddRows="False" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding MyObjects}" RowDetailsVisibilityMode="VisibleWhenSelected" Grid.Row="1">
<DataGrid.Columns>
<DataGridTextColumn Header="Unit Stake"
Binding="{Binding UnitStake,UpdateSourceTrigger=PropertyChanged}"
Width="Auto" />
<DataGridTextColumn Header="Unit Stake Dec"
Binding="{Binding UnitStakeDecimal,UpdateSourceTrigger=PropertyChanged}"
Width="Auto" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
我们有一个 super 简单的 MVVM 应用程序,在 DataGrid 中包含一个 DataGridTextColumn。此 DataGridTextColumn 中的一列绑定(bind)到 double 属性,另一列绑定(bind)到 decimal 属性。
当我们运行此程序并尝试修改 Unit Stake 列中的值时,假设我们想将其更改为 .05,因此准确输入此值,它会更改为 5。
这不会发生在 Unit Stake Dec 列(绑定(bind)到小数)。这导致了一些重大问题,那么我该如何解决这个问题,以便当用户键入 .05 时,double 属性的值实际上是 .05 而不是 < strong>5?
如果我将绑定(bind)到 LostFocus 的 double 属性的 DataGridTextColumn 列的 UpdateSourceTrigger 属性设置为 LostFocus,那么事情会按预期工作,但这里可能会丢失数据,以及为什么我不必在该列上执行此操作绑定(bind)到 decimal 属性?
谢谢
最佳答案
您是否对以下代码行有任何想法
if (value.Equals(_unitStake)) return;
查看何时在 ViewModel 类中创建 MyObject 实例
for (var i = 0; i < 5; i++)
{
_myObjects.Add(new MyObject(i, i));
}
所以它们基本上是用整数类型初始化的,当你这样做的时候
value.Equals(_unitStake)
它将始终返回 false,因为两种类型不相等。因此您无法设置 StakeUnit 属性。在 UnitStakeDecimal 的情况下,您比较它们的值
if (value == _unitStakeDecimal) return;
它有效并返回准确的结果,因此您可以设置该属性。
关于c# - 在 DataGridTextColumn 中,在绑定(bind)到 double 值类型的列上,.05 被转换为 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17792849/
我正在尝试提供一个行为类似于 DataGridTextColumn 的 DataGrid 列,但在编辑模式下有一个附加按钮。我查看了 DataGridTemplateColumn,但似乎更容易将 Da
这可能(希望)有一个微不足道或非常简单的答案。 假设我想要为我的 DataGrid 自定义标题.我可以使用 DataTemplate像这样:
有没有办法将工具提示添加到 DataGridColumn 标题并仍然保留排序功能。下面的代码不起作用(它不显示工具提示) 当我使用下面的代码时
我有几个数字列,希望它们右对齐。这是一个有点人为的例子来说明我的问题:
我有一个 DataGridTextColumn ElementStyle,如下所示:
也许,我想,事情太简单了。我有一个数据网格,从后面的代码动态添加列。这行得通。然后我有带有整数值的列,我希望在列中看到右对齐,但它失败了。我的代码是: public List> Integer
我有一个包含 3 个 DataGridTextColumns 的 DataGrid。我希望第一个占 40%,另外两个占 30%,基本上我需要它们填满整个 DataGrid。
我已经搜索并尝试了许多方法来格式化出生日期列,不仅按月份和日期,还考虑到年份。 我不敢相信这这么难做到。 我创建了几个类型转换器,它们将字符串“MM/dd/yyyy”转换为日期时间,尝试转换为不带“/
我有这个 WPF DataGrid:
首先,我使用 WPF 和 DataGrid,因为我想要列标题。但是,如果有办法做到这一点并且仍然有列标题,我不会接受这个解决方案。 现在,我进行了一些广泛的搜索并尝试了通过谷歌搜索找到的各种解决方案,
为什么这样做...
如何向 DataGridTextColumn 添加边距或填充? 最佳答案 没有示例代码的答案不是很有帮助。用这个:
如果我创建到 IsReadOnly 的绑定(bind)DataGridTextColumn 的属性(property),它没有实现。如果我通过标记设置它,它可以工作。 IsReferenceI
我目前有一个绑定(bind)到 Person 对象的 DataGrid: ... 当用户编辑网格并添加新用
我正在使用 WPFtoolkit DataGrid ,我必须将文本包装在 DataGridTextColumn 中或我必须将 ToolTip 添加到文本列。我已经在网上搜索过,但找不到合适的解决方案。
我尝试使用以下代码为 DataGridTextColumn 创建样式 ... 但是,Visual Studio 2010 用蓝线突出显示 {x:Type DataGridTe
我正在使用 DataTrigger 将空单元格替换为“-”文本。我的代码:
我正在尝试以编程方式添加 DataGridTextColumn,并设置一些属性以在单元格中显示文本。我不想使用 TemplateColumn,因为它需要双击才能进入编辑模式。我找不到可以设置文本对齐方
我正在使用 DataTrigger 将空单元格替换为“-”文本。我的代码:
我尝试做的是创建一个 Style 以在 Datagrid 中的所有 DataGridTextColumns 上应用 WordWrap,而不是像这样明确设置它。
我是一名优秀的程序员,十分优秀!