[英]DataContext not set when using View as DataTemplate in ItemsControl
[英]MVVM: When DataContext is not null by using DataTemplate to bind viewmodel(DataContext) to the view
在主要的XAML中:
<DataTemplate DataType="{x:Type vm:GraphicEditorPropertyViewModel}">
<views:GraphicEditorPropertyView/>
</DataTemplate>
在類GraphicEditorPropertyView.xaml.cs中
public partial class GraphicEditorPropertyView : UserControl
{
private bool SecurityLevelBar_MouseCaptured = false;
public GraphicEditorPropertyView()
{
InitializeComponent();
Int32 pattern = ((GraphicEditorPropertyViewModel)(this.DataContext)).CurrentGraphicEditorVgProperty.Pattern;
UInt32 frontColor = ((GraphicEditorPropertyViewModel)(this.DataContext)).CurrentGraphicEditorVgProperty.FrontColor;
UInt32 backColor = ((GraphicEditorPropertyViewModel)(this.DataContext)).CurrentGraphicEditorVgProperty.BackColor;
ConvertPattern2BrushCanvas convertPattern2BrushCanvas = new ConvertPattern2BrushCanvas(((GraphicEditorPropertyViewModel)(this.DataContext)).Parent.CurrentLibDiagramDesigner);
Brush brush = convertPattern2BrushCanvas.Convert(new object[] { frontColor, backColor, pattern }, null, null, null) as Brush;
Selected_Pattern.Fill = brush;
}
private void WindowPattern_MouseClick(object sender, RoutedEventArgs e)
{
Button button = sender as Button;
Brush buttonBrush = button.Background;
Selected_Pattern.Fill = buttonBrush;
((GraphicEditorPropertyViewModel)(this.DataContext)).CurrentGraphicEditorVgProperty.Pattern = System.Convert.ToInt32(button.ToolTip.ToString());
}
}
}
構造函數中的 DataContext為null ;
函數WindowPattern_MouseClick中的DataContext 不為 null;
為什么?
因為必須設置DataContext
。 這只是普通財產。
想想你將如何設置DataContext
的對象上。 首先創建對象(從而運行整個構造函數),然后設置DataContext
屬性。
這就是系統在后台執行的操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.