XamDateTimeEditor.IsReadOnly で不思議な挙動

現在 Infragistics さんの NetAdvantage for WPF を評価中です。
すべてのコントロールを評価するのはこれからなのですが、WPFDateTimePicker を提供しておらず、他のコントロールでは

コントロール 問題
ToolKit DatePicker 日付しか管理できない!
相互運用による WindowsForms の DateTimePicker 描画処理で重大な問題あり。*1
相互運用による GrapeCity.InputMan の GcDate(v5.0) 描画処理で重大問題あり。また相互運用だと Leave イベントが発生しない!フォーカス外れても編集状態のまま!><
AvalonControlsLibrary.DateTimePicker 書式設定できない上にエディタで編集不可


と色々問題があったため、最も DateTimePiker に近い動きをする XamDateTimeEditor クラスを評価しています。
しかしこれも不思議な動きをしますね。



まず 以下のように XAML を設定します。

<Window ・・・ xmlns:igEditors="http://infragistics.com/Editors" ・・・ />
<igEditors:XamDateTimeEditor 
	x:Name="XamDateTimeEditor1"
	IsReadOnly="True" />
Private Sub Window_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles Me.Loaded
	Me.XamDateTimeEditor1.Value = DateTime.Now
End Sub


すると XamDateTimeEditor は真っ白になります。しかしフォーカスを当てると値が表示される・・・(-ω-;
しかし DropDownButtonDisplayMode="Always" にし、コードで先に値を設定してから IsReadOnly を True にすれば
データは表示されます。

<Window ・・・ xmlns:igEditors="http://infragistics.com/Editors" ・・・ />
<igEditors:XamDateTimeEditor 
	x:Name="XamDateTimeEditor1" 
	DropDownButtonDisplayMode="Always" />
Private Sub Window_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles Me.Loaded
	Me.XamDateTimeEditor1.Value = DateTime.Now
	Me.XamDateTimeEditor1.IsReadOnly = True
End Sub


ちなみに試した環境は XP/SP3 + VS 2010。
しかしこの現象、環境が XP だからなのか? Vista や 7 だとどうなんだろうか?まだ試してない・・・



2011/01/22 17:00 追記


さらにいろいろ調べてみました。以下のように、上記の記事をもとにプロジェクトを作成してみる。

XAML

<Window x:Class="WpfApplication1.MainWindow"
		xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
		xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
		xmlns:igEditors="http://infragistics.com/Editors"
		Title="MainWindow" Height="271" Width="219" Loaded="Window_Loaded">
	<StackPanel>
		<igEditors:XamDateTimeEditor 
			Name="xamDateTimeEditor1"
			IsReadOnly="True" />
		<igEditors:XamDateTimeEditor 
			Name="xamDateTimeEditor2" 
			DropDownButtonDisplayMode="Always" />
	</StackPanel>
</Window>


C#

using System;
using System.Windows;

namespace WpfApplication1 {

	public partial class MainWindow : Window {
		public MainWindow() {
			InitializeComponent();
		}

		private void Window_Loaded(object sender, RoutedEventArgs e) {

			this.xamDateTimeEditor1.Value = DateTime.Now;
			this.xamDateTimeEditor2.Value = DateTime.Now;
			this.xamDateTimeEditor2.IsReadOnly = true;
		}
	}
}


これは大丈夫だった。
現象が発生するのは複雑な要素を持つ Window だからなのか?さっぱりわからん・・・(-ω-;



2011/01/24 追記。判明1。高さを XAML で明示的に設定すると発生する。

まずひとつ判りました。高さを XAML で明示的に設定すると再現するのが確認できました。
Height="22" とか指定すると、どちらの XamDateTimeEditor も真っ白になり、フォーカスを当てると値が表示される。
高さを指定しなければ、普通に値が表示されます。XP でしか試してないので、Vista や 7 はどうだか判りません。
この問題は確認できましたが、現在のプロジェクトでは相変わらず当初の問題が発生してる・・・判らん・・・

XAML

<Window x:Class="WpfApplication1.MainWindow"
		xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
		xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
		xmlns:igEditors="http://infragistics.com/Editors"
		Title="MainWindow" Height="271" Width="219" Loaded="Window_Loaded">
	<StackPanel>
		<igEditors:XamDateTimeEditor 
			Name="xamDateTimeEditor1"
			IsReadOnly="True" 
			Height="22" />
		<igEditors:XamDateTimeEditor 
			Name="xamDateTimeEditor2" 
			DropDownButtonDisplayMode="Always" 
			Height="22" />
	</StackPanel>
</Window>