DataGrid で OneWay Binding

WPFToolKit の DataGrid は便利でよく出来ていますが、Preview 版であり、まだまだ惜しいところがあります。
今日引っかかったのが Read Only なプロパティ (setter しかない) を Binding でバインドできないこと。強制的に TwoWay Binding するように設定されるため、「Read Only なプロパティには TwoWay や OneWayToSource は使えないよ!」と例外が出ます。
対応は既に検討されていて、final release まで待てるなら問題ないようです。IsReadOnly も public になるそうです。
そういうわけで今回手元で対応した方法は仮であり、簡単にできる方法を採りました。Microsoft.Windows.Controls.DataGridBoundColumn#EnsureTwoWay を変更して、BindingMode が明示されていない場合のみ TwoWay に置き換えるという方法です。

private static void EnsureTwoWay(BindingBase bindingBase)
{
    // If it is a standard Binding, then set the mode to TwoWay
    Binding binding = bindingBase as Binding;
    if (binding != null)
    {
        // if (binding.Mode != BindingMode.TwoWay) ↓こう変更
        if (binding.Mode == BindingMode.Default)
        {
            binding.Mode = BindingMode.TwoWay;
            TEMP_UpdateSourceWorkaround(binding);
        }
        return;
    }
 
    // A multi-binding can be set to TwoWay as well
    MultiBinding multiBinding = bindingBase as MultiBinding;
    if (multiBinding != null)
    {
        // if (multiBinding.Mode != BindingMode.TwoWay) ↓こう変更
        if (multiBinding.Mode == BindingMode.Default)
        {
            multiBinding.Mode = BindingMode.TwoWay;
            TEMP_UpdateSourceWorkaround(multiBinding);
        }
        return;
    }
(略)
}

final release までの場つなぎ、または手元の独自版ということで。