C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ActualWidth/HeightをVMにバインド


(過去ログ 122 を表示中)

[トピック内 1 記事 (1 - 1 表示)]  << 0 >>

■73233 / inTopicNo.1)  ActualWidth/HeightをVMにバインド
  
□投稿者/ jinjin (1回)-(2014/08/29(Fri) 17:30:16)

分類:[.NET 全般] 

VisaulStudio 2012
C#
.NET 4.0



★目的
ImageコントロールにBitmapSource(WriteableBitmap)を表示したい。
ビットマップのサイズは、Imageコントロール(実際には、Imageを囲むBorder)のサイズに合わせたい。

コードで書くと

void Image_SizeChaned(){
  viewModel.ChartSize = new Size(border.ActualWidth,border.ActualHeight);
}

↑↑↑ このようなことをしたい。


★現状と問題点
XAMLで、Width/HeightをViewModelにバインドすることには成功したが、
Windowが開いた時に、サイズをViewModelに反映する方法がわからない。

↑↑↑ 説明が下手ですが…
ウィンドウをマウスで引き伸ばした時は
うまく、VMにサイズが伝わっている。


WindowのImageコントロール関連のXAMLは

<Border x:Name="_ChartBaseControl" Grid.Column="2" 
        v:SizeObserver.Observe="True"
        v:SizeObserver.ObservedWidth="{Binding BitmapWidth,Mode=OneWayToSource}"
        v:SizeObserver.ObservedHeight="{Binding BitmapHeight,Mode=OneWayToSource}"
        >
    <Image DataContext="{Binding ChartingViewModel, Mode=OneWay}"  Source="{Binding Bitmap, Mode=OneWay}"   Stretch="None"  />
</Border>

ここの、"SizeObserver"は、
http://stackoverflow.com/questions/1083224/pushing-read-only-gui-properties-back-into-viewmodel

↑↑↑ここにあります。

ここのバインドはうまく行っている。


★★★問題(聞きたいこと)は、WindowのDataContextにViewModelが設定された時、このバインドが動作してほしい。

DataContextのInjectは

    <Window.DataContext>
        <Binding Mode="OneWay" Path="ViewModel" Source="{StaticResource _viewModelServer}"/>
    </Window.DataContext>


今はコードビハインド(WindowのDataContextChangedイベント)で、

private void Window_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
	var v = e.NewValue as MainWindowViewModel;
	if (v != null)
	{
		v.ChartingViewModel.BitmapSize = new Size(_ChartBaseControl.ActualWidth, _ChartBaseControl.ActualHeight);
	}
}

↑↑↑ これを入れれば、万事OKなのです。
この後は、マウスでWindowのサイズを変更(それに伴いBorderのサイズも変更される)
にしたがって、ビットマップのサイズを変更、データの描画、Imageへの表示ができています。



が、できればコードビハインドを削除したいのです。


何卒、
よろしくおねがいします!

JinJin






引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -