これはWPF
のちょっとした奇妙なものです。それは単純に列Aの項目のリストを持っているWPFのnull可能なデータ型へのバインド
<DataGrid x:Name="Rates" AlternatingRowBackground="#FCFCFC" AutoGenerateColumns="False" CanUserReorderColumns="True" CanUserResizeColumns="True" CanUserAddRows="False" SelectionUnit="FullRow" CanUserSortColumns="True">
<DataGrid.Columns>
<DataGridTextColumn Header="Item" Width="Auto" IsReadOnly="True" Binding="{Binding item}"/>
<DataGridTextColumn Header="Rate" Width ="*" Binding="{Binding rate, UpdateSourceTrigger=PropertyChanged}"/>
</DataGrid.Columns>
を、我々はB.は十分に簡単に聞こえる列にレートを入力する必要があります。だから、私はこのようなDataGrid
を持っています。
ここには、それが結合されているViewModel
のプロパティがあります。ここで
private BindableCollection<Rate> _rates;
public BindableCollection<Rate> Rates
{
get
{
return _rates;
}
set
{
if (value == _rates)
{
return;
}
_rates = value;
NotifyOfPropertyChange();
}
}
がRate
の定義です:だから
public partial class Rate
{
public int ID { get; set; }
public string client { get; set; }
public string item { get; set; }
public Nullable<decimal> rate { get; set; }
}
、私DataGrid
の2列目はNullable<decimal>
あるRate.rate
に結合しつつあります。ここに問題がある。 Nullable<decimal>
はNULL
を受け入れますが、TextBox
は空白の値を入力できません。さらに、5のような値を入力して削除すると、ViewModel
は以前の値を保持します。
私はIValueConverter
を含むソリューションを見てきましたが、私はXAMLベースのソリューションを好んでいました。何かありますか?私はDataType
がNullable
であるいくつかのモジュールを持っており、毎回IValueConverter
を使用しなければならないと、すぐに非常に面倒になることがあります。
私は結合として、したがって、どこでも動作しませんTargetNullValue=''
を使用して、Caliburn.Micro
を使用しています
EDITは自動的に行われます。上記の例では、binding
が明示されています。
Nullable 10進数をstringに置き換えて、ユーザー入力を検証したり、ユーザー入力を制限してテキストボックスクラスのtext changedイベントまたはpreviewKeydownイベントを拡張することによって10進値のみを許可することもできます。 –