動的に作成する viewModel に MdiContainer があります。
public MainWindowViewModel()
{
MdiContainer = new TabbedMdiContainer();
}
public TabbedMdiContainer MdiContainer { get; private set; }
Xaml で、このコンテナーのコンテンツを mdihost に設定しました。
<docking:TabbedMdiHost x:Uid="ALTabbedMdiHost" Grid.Row="1" IsEnabled="True" Content="{Binding MdiContainer}" IsCloseButtonOnTab="False"/>
背景画像を使用して動的に新しいタブを作成する場合、その画像で mdiContainer の高さと幅を埋めたいと思います。この目的のために、画像の高さと幅のバインディングを作成しました。
var height = new Binding("ActualHeight") { Source = MdiContainer, IsAsync = true};
var width = new Binding("ActualWidth") { Source = MdiContainer ,IsAsync = true};
_img.SetBinding(FrameworkElement.HeightProperty, height);
_img.SetBinding(FrameworkElement.WidthProperty, width);
問題は、高さがヘッダーの高さで MdiContainer の高さを含み、ヘッダーの高さのないMdiContainer の高さが必要なことです。
だから私は別のクラスでコンバーターを作成しました:
public class ImageSizeConvertor : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return ((double) value - 1000);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
しかし、コンバーターをバインディング値に追加しようとすると:
var height = new Binding("ActualHeight") { Source = MdiContainer, IsAsync = true, Converter = ImageSizeConvertor};
Class name is not valid at this point というエラーが表示されます。どうすれば解決できますか?